-
魔数
通常用来写在脚本文件的顶部,用来区别普通的文本文件,且指定了脚本文件的解释器编译器等。比如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
网友评论