基本运算符
val=`expr 2 + 2` 表达式和运算符之间要有空格 条件表达式要放在方括号之间,并且要有空格 ●算术运算符 + 加法 `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 ] 返回 true。 != 不相等。 不相同则返回 true。[ $a != $b ] 返回 true。 a=10 b=20 val=`expr $a + $b` val=`expr $a - $b` val=`expr $a \* $b` # * 前边必须加 \ val=`expr $b / $a` val=`expr $b % $a` if [ $a == $b ] then echo "a 等于 b" fi if [ $a != $b ] then echo "a 不等于 b" fi ●关系运算符 关系运算符只支持数字,不支持字符串,除非字符串的值是数字. -eq == [ $a -eq $b ] 返回 false。 -ne != [ $a -ne $b ] 返回 true。 -gt > [ $a -gt $b ] 返回 false。 -lt < [ $a -lt $b ] 返回 true。 -ge >= [ $a -ge $b ] 返回 false。 -le <= [ $a -le $b ] 返回 true。 ●布尔运算符 ! 非运算 [ ! false ] 返回 true。 -o or [ $a -lt 20 -o $b -gt 100 ] 返回 true。 -a and [ $a -lt 20 -a $b -gt 100 ] 返回 false。 ●逻辑运算符 && AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false || OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true ●字符串运算符 a="abc" b="efg" = 检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。 != 检测两个字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。 -z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。 -n 检测字符串长度是否为0,不为0返回 true。 [ -n $a ] 返回 true。 str 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。 ●文件测试运算符 -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。 ●Shell echo命令 1.显示普通字符串: echo "It is a test" echo It is a test 2.显示转义字符 echo "\"It is a test\"" echo \"It is a test\" 结果将是: "It is a test" 3.显示变量 read 命令从标准输入中读取一行. read name 4. 转义 echo -e "OK! \n" echo -e "OK! \c" # -e 开启转义 echo "It it a test" 5.显示结果定向至文件 echo "It is a test" > myfile 6.原样输出字符串,不进行转义或取变量(用单引号) echo '$name\"' echo `date` ●Shell printf 命令 printf format-string [arguments...] printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 %-10s 1、指一个宽度为10个字符(-表示左对齐,没有则表示右对齐) 2、任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充, 3、超过也会将内容全部显示出来。 %-4.2f 指格式化为小数,其中.2指保留2位小数。 printf "%d %s\n" 1 "abc" format-string为双引号 printf '%d %s\n' 1 "abc" format-string为单引号与双引号效果一样 printf %s abcdef 没有引号也可以输出 printf "%s\n" abc def 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用 printf "%s and %d \n" 如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替 ●printf的转义序列 \a 警告字符,通常为ASCII的BEL字符 \b 后退 \c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效), 而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略 \f 换页(formfeed) \n 换行 \r 回车(Carriage return) \t 水平制表符 \v 垂直制表符 \\ 一个字面上的反斜杠字符 \ddd 表示1到3位数的字符。仅在格式字符串中有效 \0ddd 表示1到3位的八进制值字符 ●Shell test命令 Shell中的 test 命令用于检查某个条件是否成立。数值、字符和文件三个方面的测试 数值测试 num1=100 num2=100 if test $[num1] -eq $[num2] then echo '两个数相等!' else echo '两个数不相等!' fi ●字符串测试 num1="runoob" num2="runoob" if test num1=num2 then echo '两个字符串相等!' else echo '两个字符串不相等!' fi ●文件测试 cd /bin if test -e ./bash then echo '文件已存在!' else echo '文件不存在!' fi ●Shell 流程控制 ●if 循环 if condition1 then command1 elif condition2 then command2 else commandN fi 单行:if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi ●for 循环 for var in item1 item2 ... itemN do command1 command2 ... commandN done 单行:for var in item1 item2 ... itemN; do command1; command2… done; ●while 语句 while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件 while condition do command done ●until 循环 until condition do command done ●case模式 case 值 in 模式1) command1 command2 ... commandN ;; 模式2) command1 command2 ... commandN ;; esac
    ------山的那一边

                
            
        
浙公网安备 33010602011771号