shell 脚本

165 阅读3分钟

shell脚本的建立与执行

建立

建立shell脚本的方法和建立普通文件的方式相同
例如:

vim myinfo.sh

执行

  1. sh命令
  2. ./脚本名
  3. 脚本名

shell脚本中的变量

  • 注释 : #
  • 取变量 : $
  • 特殊字符转为普通字符 : \
  • 被单引号引起来的字符会原样输出
  • 数值中间包含空格要用()括起来
  • 清除变量 unset
  • set 显示本地所有变量
  • env 可以看所有环境变量

位置变量

假设某个shell脚本名为test,执行时带三个参数,则shell解释执行时位置变量0的内容为test,位置变量1的内容为参数1,依次类推。

其他变量

  1. 变量

    该变量存放传递给shell脚本命令行参数的个数
  2. ?变量 该变量存放 Shell 脚本中最后一条命令的返回码。在 Linux系统中,每条命令执行完后都会返回1个值,这个值称为返回码。一般,执行成功时返回0,执行不成功时返回非0的值。Shell脚本的最终返回码也就是最后一条被执行命令的返回码。
  3. '*' 或 '@' 变量 该变量存放所有输入的命令行参数,并且每个参数之间硬空格隔开。

流程控制语句

if语句

基本形式:(不要忘记fi)

if
then
else
fi

多路判断if语句

if
then
elif
then
...
else
fi

其中elif是else if的缩写

测试语句

文件测试
  • -r file 若文件存在并且是用户可读的,则测试条件为真
  • -w file 若文件存在并且是用户可写的,则测试条件为真
  • -x file 若文件存在并且是用户可执行的,则测试条件为真
  • -f file 若文件存在并且是普通文件,则测试条件为真
  • -d file 若文件存在并且是目录文件,则测试条件为真
  • -p file 若文件存在并且是 FIFO 文件,则测试条件为真
  • -s file 若文件存在并且不是空文件,则测试条件为真
字符串测试
  • str :如果字符串 str 不是空字符串,则测试条件为真
  • strl = str2 :如果 str1 等于 str2,则测试条件为真(注意:“=”前后须有空格)
  • strl != str2 :如果 str1 不等于 str2,则测试条件为真
  • -n str :如果字符串 str 的长度不为 0,则测试条件为真
  • -z str :如果字符串 str 的长度为 0,则测试条件为真
数值测试
  • nl-eq n2 :如果整数 n1 等于 n2(n1n2),则测试条件为真
  • nl-ne n2 :如果整数 nl 不等于 n2(n1>n2),则测试条件为真
  • nl-lt n2 :如果 n1 小于 n2(nln2),则测试条件为真
  • nl-le n2:如果 n1小于等于 n2(nl<=n2),则测试条件为真
  • nl-gt n2:如果 n1 大于 n2(n1>n2),则测试条件为真
  • nl-ge n2:如果 n1 大于等于 n2(n1>=n2),则测试条件为真

for语句

for 后边加条件
do 
    循环语句
done

while until

while 当条件为真时执行 until 当条件为假时执行

break continue

break [n] n代表跳出几成循环 continue 跳过循环体后在他之后的语句 这两个都要写在循环中

算数表达式

与其他编程语言一样,Shell 也提供了丰富的算术表达式
1.算术表达式
Shell 提供五种基本的算术运算:+(加)、-(减)、* (乘)、/(除)和%(取模)。Shell 只提供整数的运算。
格式:expr nl 运算符 n2
例子如下:

[root@localhost~]# expr 20 - 10
10
[root@localhost~]# expr 15 \*16
240
[root@localhost~]# expr 15 % 4
3

注意:在运算符的前后都留有空格,否则 expr 不对表达式进行计算,而直接输出它们。表示“乘”的运算符前应加一个转义符“\”。

退出脚本程序命令

在Shell 脚本中exit 命令是立即退出正在运行的Shell 脚本,并设有退出值格式:exit[n]其中 n 为设定的退出值,如果未给定 n 的值,则退出值为最后一个命令的执行状态