Shell脚本与编程 | 青训营笔记

145 阅读2分钟

Shell简介

1、Shell的英文含义是“壳”。 2、Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,返回给用户。换句话说,3、shell是为用户与机器之间搭建成的一个桥梁,让我们能够通过Shell来对计算机进行操作和交互,从而达到让计算机为我们服务的目的。 4、Shell独立于内核,内核是Linux系统的心脏,从开机自检就驻扎在计算机内存中,直到计算机关闭为止。用户的应用程序存储在计算机硬盘上,仅当需要时才被调入内存。5、Shell是一种应用程序,当用户登陆Linux系统时,Shell就会被调用到内存执行。

Shell配置文件读取

1、login shell(登录) 读取顺序:

i、/etc/profile -> ~./bash_profile、~./bash_login、~./profile

ii、/etc/profile -> ~./bashsrc

2、non-login shell(非登录) 读取顺序: ~./bashsrc

命令执行机制

1、字符解析 字符串截取 字符串替换

2、shell展开 shell中有7种展开。展开的顺序是:大括号展开;波浪展开、参数和变量展开、算术展开和命令替换(以从左到右的方式完成);分词;和文件名扩展。在支持它的系统上,还有一种额外的扩展:进程替换。这与波浪线、参数、变量、算术展开和命令替换同时执行。在执行这些扩展之后,原始单词中的引号字符将被删除,除非它们本身被引号括起来(引号删除)。只有大括号展开、分词和文件名展开才能增加展开的单词数;其他扩展将单个单词扩展为单个单词。唯一的例外是$@和 $∗ 以 及 *以及 ∗以及 {name[@]}和${name[*]}(见数组)的扩展。

3、查找命令、执行

判断命令

test[ [[

选择命令

if elif else if

case in ) ease

循环

while [condition];do;done

until[condition];do;done

for in [list];do;done;

shell默认变量

shell常用默认变量如下:

一、文件参数变量

在执行脚本时,可以向脚本传递参数。$1是第一个参数,$2是第二个参数,以此类推。而$0是文件名,包含路径。

1.创建文件test.sh

2.vim test.sh

3.按i进入编辑模式

4.#!/bin/bash

echo "文件名:" $0

echo "第一个参数:" $1

echo "第二个参数:" $2

5.执行脚本 ./test.sh aaa zzz #记得在执行前给文件加执行权限 chmod +x test.sh

(以下为输出)

文件名:./test.sh

第一个参数:aaa

第二个参数:zzz

二、其他参数变量

1.$#:意思是传进文件传了几个参数,就像上面举的例子是两个参数

2.$*:由所有参数构成的用空格隔开的字符串,如上例为"$1 $2"

3.$@:每个参数分别用双引号括起来的字符串,如上例为"$1" "$2"

4.$$:脚本当前运行的进程ID

5.$?:上一条命令的退出状态(exit code),0表示正常,其他值表示错误。可以拿return来理解

6.$(command):返回这条命令的stdout。其实说白了就是标准输出。

7.`comdmand`:返回这条命令的stdout。注意不是单引号,是tab键上面的那个符号