美文网首页
每天学习一个shell技能(6)

每天学习一个shell技能(6)

作者: 浮生随笔 | 来源:发表于2018-07-30 17:05 被阅读8次

每天学习一个shell技能(6)

test

test文件

if test -e ./test.sh
then
    echo '文件已存在!'
else
    echo '文件不存在!'
fi
  • -e fileName : 如果文件存在则为真
  • -r fileName : 如果文件存在且可读则为真
  • -w fileName : 如果文件存在且可写则为真
  • -x fileName : 如果文件存在且可执行则为真
  • -s fileName: 文件存在且至少有一个字符
  • -d fileName : 文件存在且为目录
  • -f fileName: 文件存在且为文件
  • -c fileName:文件存在,且为字符型特殊文件
  • -b fileName: 如果文件存在且为块特殊文件则为真

test字符串

  • = :等于则为真
  • != :不等于则为真
  • -z : 字符串长度为零则为真
  • -n : 字符串长度不为零则为真

数值测试

  • -eq :等于
  • -ne : 不等于
  • -gt:大于
  • -lt:小于
  • -ge:大于等于
  • -le: 小于等于

流程控制(条件)

if

if condition
then
    command1 
    command2
    ...
    commandN 
fi

if else

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

if else-if else

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

实例 用法:

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

控制流(for 循环)

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

改成一行:

for var in item1 item2 ... itemN; do command1; command2… done;

while

while condition
do
    command
done
int=1
while(( $int<=5 ))
do
    echo $int
    let "int++"
done

无限循环:

while :
do
    command
done

// 或者
while true
do
    command
done

// 或者
for (( ; ; ))

until 循环

until condition
do
    command
done

case in

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

跳出循环

break

break命令允许跳出所有循环(终止执行后面的所有循环)

continue

continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环

while :
do
    echo -n "输入 1 到 5 之间的数字: "
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的!"
            continue
            echo "游戏结束"
        ;;
    esac
done

esac

case的语法和C family语言差别很大,它需要一个esac(就是case反过来)作为结束标记,每个case分支用右圆括号,用两个分号表示break。

相关文章

网友评论

      本文标题:每天学习一个shell技能(6)

      本文链接:https://www.haomeiwen.com/subject/ysgfvftx.html