linux系统shell基础知识入门二

条件判断语句

test或[],这两是等价的。但用[]这种可能看起来更简洁
必须在[符号和检查条件之间留出空格,而test命令之后也总是应该有一个空格
如果要把test 和then 放一行上,那么必须在test语句和then之间加上分隔符“ ; "

第1种
if test -f /tmp/log.log; then
  echo "Yes"
else
   echo "No"
fi
第2种
if [ -f /tmp/log.log ]; then
 echo "log exists"
fi
字符串比较 结果
str1 = str2 字符串相同为真
str1 != str2 字符串不相同为真
-n string 字符串不为空时,结果为真
-z string 字符串为null(空串),不能值为null的串。结果为真
算术比较 结果
exp1 -eq exp2 两表达式相等,结果为真
exp1 -ne exp2 两表达式不等,结果为真
exp1 -gt exp2 exp1大于exp2,结果为真
exp1 -ge exp2 exp1大于等于exp2,结果为真
exp1 -lt exp2 exp1小于exp2,结果为真
exp1 -le exp2 exp1小于等于exp2,结果为真
! exp1 exp1为假,则结果为真,反之亦然
文件条件测试 结果
-d file 文件是一个目录,结果为真
-e file 文件存在为真,目前更多使用-f file
-f file 文件是普通文件为真
-g file 文件的set-group-id位被设置为真
-r file 文件可读为真
-s file 文件大小不为0为真
-u file 文件的set-user-id位被设置为真
-w file 文件
-x file 文件可执行为真

控制结构(if)

if 条件
then
   语句
else
  语句
fi  

或使用elif多重选择
if 条件
then
   语句
elif 条件
   语句
else
  语句
fi 

num=1
if [ "$num" -eq 1 ]; then
  echo 1
elif [ "$num" -eq 2 ]; then
  echo 2
else
  echo 3
fi
exit 0

for语句

for variable in values;
do
 语句
done

#! /bin/bash
for i in $(ls /tmp);do
  ls '/tmp/'$i
done
exit 0

while语句

while 条件 do;
语句
done

until语句

和whle相似,不过它是反复执行直到条件为真,而不是条件为真是反复执行

until 条件 
do
语句
done

case语句

每个模式行都以分号;;结尾

case variable in
 parttern [| parttern] ...) 语句;;
esac

posted @ 2019-01-24 23:21  随彦心MO  阅读(188)  评论(0编辑  收藏  举报