shell控制结构语句
发布时间:2020-12-15 16:54:13 所属栏目:安全 来源:网络整理
导读:test -f filename if test -f fred.c then ... fi 你还可以写成下面这样: if [ -f fred.c] then ... fi 注意[ 符号和被检查打条件之间留出空格, if 如果和放在同一行,要用分号将test语句和 then 分隔开. if [ -f fred.c ]; then test命令后面跟的条件分为
test -f <filename>
if test -f fred.c
then
...
fi
你还可以写成下面这样:
if [-f fred.c]
then
...
fi
注意[ 符号和被检查打条件之间留出空格,
if 如果和放在同一行,要用分号将test语句和then分隔开.
if [ -f fred.c ]; then
test命令后面跟的条件分为三种,字符串比较,算数比较,文件有关的条件测试
1.字符串比较
string1 = string2 如果两个字符串相同结果为真
strng1 != string2 如果两个字符串不同则结果为真
-n string 如果字符串部位空则结果为真
-z string 如果字符串为null 则结果为真
2.算术比较
express -eq express2 如果两个表达式相等则结果为真
express -ne express2 如果两个表达式结果不等则为真
express -gt express2 如果express > express2 则结果为真
express -ge express2 如果express >= express2 则结果为真.
express -lt express2 如果express < express2 则结果为真.
express -lt express2 如果express <= express2 则结果为真
!express 如果表达式为假则结果为真,反之亦然
3.文件条件测试
-d file 如果文件是一个目录则结果为真
-e file 如果文件存在则结果为真
-f 如果文件是一个普通文件则结果为真
-g file 如果文件打set-group-id 位被设置则结果为真
-r file 如果文件可读则结果为真
-s file 如果文件大小>0则结果为真
-u file 如果文件的set-user-id位被设置则结果为真
-w file 如果文件可写则结果为真
-x file 如果文件可执行则结果为真
set-group-id set-user-id 也叫set-gid set-uid
set-uid授予程序拥有者打访问权限而不是使用者打访问权限
set-gid 授予程序所在组打访问权限,这两个特殊位通过chmod命令的选项s和g设置的
set-gid和set-uid 标志对shell脚本程序不起作用,对可执行打二进制文件有用
测试的例子
if [ -f /bin/bash ]
then
echo "file /bin/bash exists"
fi
if [ -d /bin/bash ]
then
echo "/bin/bash is a directory"
else
echo "/bin/bash is not a directory"
fi
for variable in values
do
statements
done
while condition do
statements
done
until condition
do
statements
done
case variable in
pattern) statements;;
pattern) statements;;
esac
pattern 匹配还可以[Yy][Ee][Ss]
and列表
touch file_one
rm -f file_two
if [ -f file_one ] && echo "hello" && [ -f file_two ] && echo " there"
then
echo "in if"
else
echo "in else"
fi
exit 0
touch file_one 检查文件是否存在 如果不存在就创建他
or 列表
rm -f file_one
if [ -f file_one ] || echo "hello" || echo "there"
then
echo "in if"
else
echo "in else"
fi
exit 0 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- vim中的代码片段 – 返回上一个参数的任何选项?
- Advanced Programming in UNIX Environment Episode 29
- Angular进阶:Angular编译机制(AOT、JIT)
- Angular2入门——(4)为模板应用样式
- Scala中的“call-cc”模式?
- angularjs – Internet Explorer 8上的Angular JS ui-route
- postgresql – 使用Docker进行集成测试后恢复数据库状态?
- bootstrap模态框的简单使用demo
- scala – 使用背景编译为Specs2测试配置IntelliJ IDEA?
- AngularJs在ng-click函数中如何获取代表当前元素的DOM对象