shell的条件执行
Posted 自己解决c++
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell的条件执行相关的知识,希望对你有一定的参考价值。
使用 test 命令
test命令可用于:
- 文件属性测试
- 字符串测试
- 算数测
test 命令的语法为:
test EXPRESSION
test [ EXPRESSION ]
文件属性测试操作符表
操作符 | 描 述 |
---|---|
-e <FILE> | 如果<FILE>存在则为真 |
-f <FILE> | 如果<FILE>存在且只有一个常规文件则为真 |
-d <FILE> | 如果<FILE>存在且只有一个目录则为真 |
-c <FILE> | 如果<FILE>存在且是一个特殊字符文件则为真 |
-b <FILE> | 如果<FILE>存在且是一个特殊块文件则为真 |
-p <FILE> | 如果<FILE>存在且是一个命名管道则为真 |
-S <FILE> | 如果<FILE>存在且是一个套接字文件则为真 |
-L <FILE> | 如果<FILE>存在且是一个符号链接则为真 |
-h <FILE> | 如果<FILE>存在且是一个符号链接则为真 |
-g <FILE> | 如果<FILE>存在且是设置了sgid位则为真 |
-u <FILE> | 如果<FILE>存在且是设置了suid位则为真 |
-r <FILE> | 如果<FILE>存在且是可读的则为真 |
-w <FILE> | 如果<FILE>存在且是可写的则为真 |
-x <FILE> | 如果<FILE>存在且是可执行的则为真 |
-s <FILE> | 如果<FILE>存在且不为空则为真 |
-t <fd> | 如果文件描述符<fd>已打开且引用了一个终端则为真 |
<FILE1> -nt <FILE2> | 如果<FILE1> 比 <FILE2>新则为真 |
<FILE1> -ot <FILE2> | 如果<FILE1> 比 <FILE2>旧则为真 |
<FILE1> -ef <FILE2> | 有硬链接到 <FILE2>则为真 |
例如:检查文件是否存在
test -e /bin/cp && echo "command $_ found." || echo "command $_ not found."
注意:"$_" 表示前一个执行的命令中的最后一个参数
例如:检查目录/local 是否存在
test -d /local && echo "The directory $_ is exist." || echo "The directory $_ does not exist
等等...,都可以通过上面表格的参数进行检查
操作符 | 描 述 |
---|---|
-z <STRING> | 如果<STRING>为空则为真 |
-n <STRING> | 如果<STRING>不为空则为真 |
<STRING1> = <STRING2> | 如果<STRING1>与<STRING2>相同则为真 |
<STRING1> != <STRING2> | 如果<STRING1>与<STRING2>不相同则为真 |
<STRING1> < <STRING2> | 如果<STRING1>的字典顺序排在<STRING2>之前则为真 |
<STRING1> > <STRING2> | 如果<STRING1>的字典顺序排在<STRING2>之后则为真 |
使用字符串测试操作符的例子:
test "abc" = "cde"; echo $?
test "abc" = "cde"; echo $?
test "abc" \\< "def"; echo $?
test "abc" \\> "def"; echo $?
[ "abc" \\< "def" ]; echo $?
[ -z "" ]; echo $?
[ -n "abc" ]; echo $?
注意:"<" 和 ">" 操作符同样被shell用于重定位,所示必须使用"\\"字符将其转义
用于算术测试的操作符:
操作符 | 描 述 |
---|---|
<INTEGER1> -eq <INTEGER2> | 如果<INTEGER1> 与 <INTEGER2>相等则为真 |
<INTEGER1> -ne <INTEGER2> | 如果<INTEGER1> 与 <INTEGER2>相等则为真 |
<INTEGER1> -le <INTEGER2> | 如果<INTEGER1> 大于或等于 <INTEGER2>不相等则为真 |
<INTEGER1> -ge <INTEGER2> | 如果<INTEGER1> 小于或等于 <INTEGER2>则为真 |
<INTEGER1> -lt <INTEGER2> | 如果<INTEGER1> 小于 <INTEGER2>则为真 |
<INTEGER1> -gt <INTEGER2> | 如果<INTEGER1> 大于 <INTEGER2>则为真 |
算术测试操作符的例
子:
test 5 -eq 5 && echo Yes || echo No
test 5 -ne 10 && echo Yes || echo No
[ 5 -le 10 ] && echo Yes || echo No
[ 10 -le 10 ] && echo Yes || echo No
[ 5 -ge 10 ] && echo Yes || echo No
over....
以上是关于shell的条件执行的主要内容,如果未能解决你的问题,请参考以下文章