shell控制结构语句

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值