美文网首页
shell脚本编程

shell脚本编程

作者: 简公孙策 | 来源:发表于2020-03-25 09:17 被阅读0次
    • 魔数
      通常用来写在脚本文件的顶部,用来区别普通的文本文件,且指定了脚本文件的解释器编译器等。比如shell文件的第一行要写上 #!/bin/bash 。

    • 变量
      shell中变量分为:
      ①、本地变量:指当前打开的bash进程创建和使用的变量,在bash中直接通过:VARNAME=VALUE声明创建即可,引用的时候使用$VARNAME。局部变量是其一个子集(执行的脚本文件中创建的变量,脚本文件执行完成后,其中的变量自动清除)
      ②、环境变量:bash及其进程中打开的子bash进程都可以使用的变量。声明的前面需要添加 export 关键字。
      ③、位置变量:在执行脚本文件的时候,其后可以跟参数,在脚本文件内部,可以根据$!、$2、$3等指定引用的第几个参数。
      ④、特殊变量(系统变量):系统预置有特殊意义的变量,比如$?表示上一条命令执行状态结果(其值在0-255之间,0表示成功,其它均表示错误);$#表示用户在执行脚本的时候给出的参数的个数;$*和$@会列出所有的脚本参数。
      注: 命令set可以查看所有变量,export 、env 、printenv 可以查看环境变量。unset 变量名,可以删除变量。

      :命令执行结果包括两个,一个是命令执行后产生的输出结果(如果不想命令执行完成后有输出,可以通过“&>/dev/null” 重定向到/dev/null这个虚拟设备中,该设备可以吞噬所有数据),一个是命令执行成功与否的状态结果(其值在0-255之间,只有0表示成功;命令执行完成后,其状态结果会保存在$?变量中,所以在脚本文件中常用作执行逻辑的判断标准,比如:command1 && command2 && command3 ... || commandn,该语法表示,如果第一条命令command1执行成功后就执行command2,command2执行成功后就执行command3 ... ,否则就执行commandn)。
        在脚本文件中,shift 当做脚本参数的轮换命令,每执行一次shift [n]命令,$1中存储的参数就轮换为下一个参数,所以如果有循环执行的换,可以只使用$1变量我们就可以将用户传递的参数轮换一遍。

    • 表达式
      ①、逻辑运算:与&&、或||、非!、异或^(两边相同为false,不同为true)。(注:shell脚本中的&&和||都具有短路功能)

      ②、测试表达式:该表达式主要用来判断,得出一个布尔结果,常跟在if后面,用来作为语句执行与否的判断依据;格式为 test expression 、[ expression ]或[ [ expression ] ]。
      注:bash的条件表达式中有三个几乎等效的符号和命令:test,[]和[[]]。通常,大家习惯用if [];then这样的形式。而[[]]的出现,根据ABS所说,是为了兼容><之类的运算符。[[]] 运算符只是[]运算符的扩充。能够支持<,>符号运算不需要转义符,它还是以字符串比较大小。里面支持逻辑运算符。比较它们性能,发现[[]]是最快的。不考虑对低版本bash和对sh的兼容的情况下,用[[]]是兼容性强,而且性能比较快,在做条件运算时候,可以使用该运算符。

        算术比较预算符:等于-qe、不等于-ne、大于-gt、小于-lt、大于等于-ge、小于等于-le。

        文件比较运算符:用法是 -选项 文件路径;-e 文件是否存在、-d 文件是否是目录、-f 文件是否是常规文件、-L 文件是否为符合链接、-r 当前执行用户是否对文件有可读权限、-w 当前执行用户是否对文件有可写权限、-x 当前执行用户是否对文件有执行权限;filename1 -nt filename2 文件1是否新过文件2、filename1 -ot filename2 文件1是否老过文件2、filename1 -ef filename2 文件1和文件2是否为同一个文件。

        字符串比较运算符:用法是 -选项 字符串;-z 字符串长度是否为0、 -n 字符串长度是否非零; str1 = str2 字符串str1是否等于str2、 str1 != str2 字符串str1是否不等于str2。
      参考文章参考文章参考文章

      ③、算术运算表达式:
        格式:
          使用 $[ ] 如: $[ 2+5 ]、 $[ $A + $B ]
          使用 $(( )) 如:$(( 2+5 )) 、$(( $A + $B ))
          使用 expr 外部程式 如:C=`expr 4 + 5`、C=`expr $A + $B`
          使用let 命令 如:let C=4 + 5、let C= $A + $B

    相关文章

      网友评论

          本文标题:shell脚本编程

          本文链接:https://www.haomeiwen.com/subject/qnnzyhtx.html