当前位置: 技术问答>linux和unix
一个SHELL条件控制的问题
来源: 互联网 发布时间:2017-02-06
本文导语: if test ! -s "$1" then echo $1 does not exist or is empty. fi 中的-s有什么用? 还有 if [$# -lt 2 -o ! -e $1] then exit fi 中的-o和-e 有什么用? | 嘿嘿,我刚学完,总结了一下,给你参考一下...
if test ! -s "$1"
then
echo $1 does not exist or is empty.
fi
中的-s有什么用?
还有
if [$# -lt 2 -o ! -e $1]
then
exit
fi
中的-o和-e 有什么用?
then
echo $1 does not exist or is empty.
fi
中的-s有什么用?
还有
if [$# -lt 2 -o ! -e $1]
then
exit
fi
中的-o和-e 有什么用?
|
嘿嘿,我刚学完,总结了一下,给你参考一下哈
1.测试文件状态
Test一般有两种格式:
test condition 或 [ condition ] (使用方括号时,要注意在条件两边加上空格)。
文件状态测试:
- e 文件存在(同- a)
- d 目录- s 文件长度大于0、非空
- f 正规文件- w 可写
- L 符号连接- u 文件有s u i d位设置
- r 可读- x 可执行
- s 文件长度大于0、非空
- w 可写
- u 文件有s u i d位设置
- x 可执行
- c 文件为字符特殊文件为真
-b 文件为块设备文件为真
-p 文件是个管道
-t 当文件描述符(默认为1)指定的设备为终端时为真
-h 文件是个符号链接
-S 文件是个socket
f1 - nt f2 文件1比文件2新
f1 - ot f2 f1比f2老
f1 - ef f2 f1和f2都硬连接到同一个文件
注意:测试结果是0表示成功,其他为失败。(echo $ ?查看成功与否)
2.测试时使用逻辑操作符
-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。
3. 字符串测试
= 两个字符串相等。
!= 两个字符串不等。
-z 空串。
-n 非空串。
4. 测试数值
测试数值可以使用许多操作符,一般格式如下:
"number" numeric operator "number"
或者
["number" numeric operator "number"]
numeric operator可为:
-eq 数值相等。
-ne 数值不相等。
-gt 第一个数大于第二个数。
-lt 第一个数小于第二个数。
-le 第一个数小于等于第二个数。
-ge 第一个数大于等于第二个数。
1.测试文件状态
Test一般有两种格式:
test condition 或 [ condition ] (使用方括号时,要注意在条件两边加上空格)。
文件状态测试:
- e 文件存在(同- a)
- d 目录- s 文件长度大于0、非空
- f 正规文件- w 可写
- L 符号连接- u 文件有s u i d位设置
- r 可读- x 可执行
- s 文件长度大于0、非空
- w 可写
- u 文件有s u i d位设置
- x 可执行
- c 文件为字符特殊文件为真
-b 文件为块设备文件为真
-p 文件是个管道
-t 当文件描述符(默认为1)指定的设备为终端时为真
-h 文件是个符号链接
-S 文件是个socket
f1 - nt f2 文件1比文件2新
f1 - ot f2 f1比f2老
f1 - ef f2 f1和f2都硬连接到同一个文件
注意:测试结果是0表示成功,其他为失败。(echo $ ?查看成功与否)
2.测试时使用逻辑操作符
-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。
3. 字符串测试
= 两个字符串相等。
!= 两个字符串不等。
-z 空串。
-n 非空串。
4. 测试数值
测试数值可以使用许多操作符,一般格式如下:
"number" numeric operator "number"
或者
["number" numeric operator "number"]
numeric operator可为:
-eq 数值相等。
-ne 数值不相等。
-gt 第一个数大于第二个数。
-lt 第一个数小于第二个数。
-le 第一个数小于等于第二个数。
-ge 第一个数大于等于第二个数。