【shell】shell学习笔记,结构化命令,if-then语句

if-then语句

if command

then

  commands

commands

fi

if-then-else语句

if command

then

  commands

else

  commands

fi

嵌套if

if command1

then

  commands

elif command2

then

  more commands

fi

 

test命令

if [ condition ]

then

  commands

fi

 

test 命令的数值比较功能

n1 -eq n2 检查n1是否与n2相等

n1 -ge n2 检查n1是否大于或等于n2

n1 -gt n2 检查n1是否大于n2

n1 -le n2 检查n1是否小于或等于n2

n1 -lt n2 检查n1是否小于n2

n1 -ne n2 检查n1是否不等于n2

 

字符串比较

test命令的字符串比较功能

str1 = str2 检查str1是否和str2相同

str1 !=str2 检查str1是否和str2不同

str1 < str2 检查str1是否比str2小

str1 > str2 检查str1是否比str2大

-n str1 检查str1的长度是否非0

-z str1 检查str1的长度是否为0

例子:

#!/bin/bash
#string comparisons

val1=aaaaaaa
val2=aaa

if [ $val1 \> $val2 ]

#比较符号前需要加反斜杠,否则会被当做重定向处理
then
    echo "$val1 is greater than $val2"
else
    echo "$val1 is less than $val2"
fi

if [ -n "$val1" ]

#判断字符串长度是否非零

if [ -z "$val2" ]

#判断字符串长度是否为零

 

*文件比较

test命令的文件比较功能

-d file 检查file是否存在并是一个目录

-e file 检查file是否存在

-f file 检查file是否存在并是一个文件

-r file 检查file是否存在并可读

-s file 检查file是否存在并非空

-w file 检查file是否存在并可写

-x file 检查file是否存在并可执行

-O file 检查file是否存在并属于当前用户所有

-G file 检查file是否存在并且默认组与当前用户相同

file1 -nt file2 检查file1是否比file2新

file1 -ot file2 检查file1是否比file2旧

 

复合条件测试

[ condition1 ] && [ condition2 ]

[ condition1 ] || [ condition2 ]

 

使用双圆括号

双圆括号允许将高级数学表达式放入比较中。

双圆括号命令符号

val++ 后增

val-- 后减

++val 先增

--val 先减

! 逻辑求反

~ 位求反

** 幂运算

<< 左位移

>> 右位移

& 位布尔和

| 位布尔或

&& 逻辑和

|| 逻辑或

#双圆括号中的大于小于号不需要转义

 

使用双方括号

[[ expression ]]

双方括号提供了test命令另一个特性-模式匹配

在模式匹配中,可以定义一个正则表达式来匹配字符串值

case命令

case variable in

pattern1 | pattern2) command1;;

pattern3) command2;;

*) defalt commands;;

esac

 

posted @ 2017-06-05 10:34  老年新手工程师  阅读(1914)  评论(0编辑  收藏  举报