Linux之Shell编程(2)


一、条件判断

判断语句

基本语法
[ condition ] (注意condition前后要有空格)
#非空返回true,可使用$?验证(0为true,>1为false )
应用实例
[ hspEdu ] 返回true
[] 返回false
[ condition ] && echo OK ll echo notok 条件满足,执行后面的语句

常用判断条件

  1. = 字符串比较
  2. 两个整数的比较
-lt小于
-le小于等于little equal
-eq等于
-gt大于
-ge大于等于
-ne不等于

3)按照文件权限进行判断

-r 有读的权限
-w 有写的权限
-x 有执行的权限

4)按照文件类型进行判断

-f文件存在并且是一个常规的文件
-e文件存在
-d文件存在并是一个目录

应用实例
案例1: "ok"是否等于"ok"判断语句:

#!/bin/bash
if [ "ok" = "ok" ]
then
      echo "equals"
fi

案例2: 23是否大于等于22判断语句:

if [ 23 -ge 22 ]
then
    echo "TRUE"
fi

案例3 :/root/shcode/aaa.txt目录中的文件是否存在判断语句 使用 -f:

if [ -f /root/shcode/bbb.txt ]
then
     echo "true"
fi

二、流程控制

if 判断

基本语法

if [条件判断式]
then
代码
fi

或者,多分支

if [条件判断式]
then
代码
elif [条件判断式]
then
代码
fi

注意事项:[条件判断式],中括号和条件判断式之间必须有空格
应用实例 ifCase.sh
案例:请编写一个shell程序,如果输入的参数,大于等于60,则输出"及格了",如果小于60,则输出“不及格"

if [ $1 -ge 60 ]
then
echo "及格了"
elif [ $1 -lt 60 ]
then
echo "不及格"
fi

case语句

基本语法

case $变量名 in
"值1" )
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;.省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

√应用实例
testCase.sh
案例1:当命令行参数是1时,输出"周一",是2时,就输出"周二",其它情况输出"other"

#!/bin/bash
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other。。"
;;
esac

for循环

基本语法1

for 变量 in 值123...
do
程序/代码
done

应用实例testFor1.sh
案例1:打印命令行输入的参数[这里可以看出$*$@的区别]


#!/bin/bash
for i in "$*"
do
echo "num is $i"
done

for j in "$@"
do
echo "num is $j"
done

基本语法2

for ((初始值;循环控制条件;变量变化))
do
程序
done

应用实例testFor2.sh
案例1:从1加到100的值输出显示

#!/bin/bash
SUM=0
for(( i=1; i<=100; i++))
do
   SUM=$[$SUM + $i]
done
echo "sum=$SUM"

while循环

基本语法1

while[条件判断式]
do
程序
done

注意:while和[有空格,条件判断式和[也有空格
应用实例testWhile.sh
案例1:从命令行输入一个数n,统计从1+…+n的值是多少?

#!/bin/bash
SUM=0
i=0
while [ $i -le $1 ]
do
   SUM=$[$SUM+$i]
   i=$[$i+1]
done
echo "1加到$i 的值=$SUM"

猜你喜欢

转载自blog.csdn.net/hsuehgw/article/details/129731732
今日推荐