定义变量 变量前不加$美圆符号(php语言中须要添加)
与Java命名规则相同 1.不能如下划线、空格、数字、特殊符号开头 2.不能使用bash关键字
test_name="aa" echo $test_name
运行的结果以下
php
unset variable_name
1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其余shell启动的程序不能访问局部变量。 2) 环境变量 全部的程序,包括shell启动的程序,都能访问环境变量,有些程序须要环境变量来保证其正常运行。必要的时候shell脚本也能够定义环境变量。 3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,做为字符串拼接使用。
双引号的优势: 双引号里能够有变量 双引号里能够出现转义字符
${#string}
${String:index_start-1:char_account} 列入从第二个字符开始截取6个字符 ${string:1:6}
expr index "$string" +查到的某个字符串
数组名=(值1,值2.....) 例:array_name=(value1,value2......)
读取数组元素值的通常格式是: ${数组名[下标]} 例${array_name[0]}
# 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 lengthn=${#array_name[n]}
以 # 开头的行就是注释,会被解释器忽略。 经过每一行加一个 # 号设置多行注释
多行注释还可使用如下格式: :<<EOF 注释内容... 注释内容... 注释内容... EOF
脚本内获取参数的格式为:$n。n 表明一个数字,0表明执行的文件名,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… $# 传递到脚本的参数个数 $* 以一个单字符串显示全部向脚本传递的参数。 如"$*"用「"」括起来的状况、以"$1 $2 … $n"的形式输出全部参数。 $$ 脚本运行的当前进程ID号 $! 后台运行的最后一个进程的ID号 $@ 与$*相同,可是使用时加引号,并在引号中返回每一个参数。 如"$@"用「"」括起来的状况、以"$1" "$2" … "$n" 的形式输出全部参数。 $- 显示Shell使用的当前选项,与set命令功能相同。 $? 显示最后命令的退出状态。0表示没有错误,其余任何值代表有错误。
声明array_name=(value1 value2......)或array_name[0]=value1 array_name[1]=value2...... 取值 ${array_name[0]} 取元素个数 ${#array_name[*]}或 ${#array_name[@]}
Shell 和其余编程语言同样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,可是能够经过其余命令来实现,例如 awk 和 expr,expr 最经常使用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操做。 1.算术运算符:与java相同 须要expr + 加法 `expr $a + $b` 结果为 30。 - 减法 `expr $a - $b` 结果为 -10。 * 乘法 `expr $a \* $b` 结果为 200。 / 除法 `expr $b / $a` 结果为 2。 % 取余 `expr $b % $a` 结果为 0。 = 赋值 a=$b 将把变量 b 的值赋给 a。 == 相等。用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false。 != 不相等。用于比较两个数字,不相同则返回 true。 [ $a != $b ] 返回 true。 2.关系运算符:与java相同 -eq == 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。 -ne != 检测两个数是否不相等,不相等返回 true。 [ $a -ne $b ] 返回 true。 -gt > 检测左边的数是否大于右边的,若是是,则返回 true。 [ $a -gt $b ] 返回 false。 -lt < 检测左边的数是否小于右边的,若是是,则返回 true。 [ $a -lt $b ] 返回 true。 -ge >= 检测左边的数是否大于等于右边的,若是是,则返回 true。 [ $a -ge $b ] 返回 false。 -le <= 检测左边的数是否小于等于右边的,若是是,则返回 true。 [ $a -le $b ] 返回 true。 3.布尔运算符 ! 非运算,表达式为 true 则返回 false,不然返回 true。 [ ! false ] 返回 true。 -o 或运算,有一个表达式为 true 则返回 true。 [ $a -lt 20 -o $b -gt 100 ] 返回 true。 -a 与运算,两个表达式都为 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ] 返回 false。 4.逻辑运算符 && 逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false || 逻辑的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true 5.字符串运算符 = 检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。 != 检测两个字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。 -z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。 -n 检测字符串长度是否不为 0,不为 0 返回 true。 [ -n "$a" ] 返回 true。 $ 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。 6.文件测试运算符 文件测试运算符用于检测 Unix 文件的各类属性。 -b file 检测文件是不是块设备文件,若是是,则返回 true。 [ -b $file ] 返回 false。 -c file 检测文件是不是字符设备文件,若是是,则返回 true。 [ -c $file ] 返回 false。 -d file 检测文件是不是目录,若是是,则返回 true。 [ -d $file ] 返回 false。 -f file 检测文件是不是普通文件(既不是目录,也不是设备文件),若是是,则返回 true。 [ -f $file ] 返回 true。 -g file 检测文件是否设置了 SGID 位,若是是,则返回 true。 [ -g $file ] 返回 false。 -k file 检测文件是否设置了粘着位(Sticky Bit),若是是,则返回 true。 [ -k $file ] 返回 false。 -p file 检测文件是不是有名管道,若是是,则返回 true。 [ -p $file ] 返回 false。 -u file 检测文件是否设置了 SUID 位,若是是,则返回 true。 [ -u $file ] 返回 false。 -r file 检测文件是否可读,若是是,则返回 true。 [ -r $file ] 返回 true。 -w file 检测文件是否可写,若是是,则返回 true。 [ -w $file ] 返回 true。 -x file 检测文件是否可执行,若是是,则返回 true。 [ -x $file ] 返回 true。 -s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。 -e file 检测文件(包括目录)是否存在,若是是,则返回 true。 [ -e $file ] 返回 true。