shell-逻辑表达式

2019-08-08  本文已影响0人  _str_

逻辑表达式

if判断

if...then...fi

if [ 条件判断式 ];then
       命令     当条件判断式成立时,执行这条命令

if ... then ... else....fi

一颗红心,两手准备

if [ 条件判断式 ]; then
    当条件判断式成立时,可以进行的指令工作内容;
else
    当条件判断式不成立时,可以进行的指令工作内容;
fi

if ... elif ... elif ... else ... fi

if [ 条件判断式一 ]; then
    当条件判断式一成立时,可以进行的指令工作内容;
elif [ 条件判断式二 ]; then
    当条件判断式二成立时,可以进行的指令工作内容;
else
    当条件判断式一与二均不成立时,可以进行的指令工作内容;
fi

利用 case ..... esac 判断

case  $变量名称 in   <==关键字为 case ,还有变量前有钱字号
  "第一个变量内容")   <==每个变量内容建议用双引号括起来,关键字则为小括号 )
    程序段
    ;;            <==每个类别结尾使用两个连续的分号来处理!
  "第二个变量内容")
    程序段
    ;;
  *)                  <==最后一个变量内容都会用 * 来代表所有其他值
    不包含第一个变量内容与第二个变量内容的其他程序运行段
    exit 1
    ;;
esac                  <==反过来写,结束当前语句结构!

模式还可以是多个

#!/bin/bash
cat << EOF
m|M) show memory usages;
d|D) show disk usages;
q|Q) quit
EOF
read -p "Your choice" choice
case $choice in
m|M) #####
        free -m
        ;;
d|D)  #####
        df -h
        ;;
q|Q)  #####
        exit
        ;;
*)
        echo "Invalid input"
        ;;
esac

while...do..done(不确定的循环)

while [ condition ]  ==>中括号内的状态就是判断式
do            ==> do 是循环的开始!
    代码段
    代码段
done          ==> done 是循环的结束

计数

n=0
while [ "$n" -lt 5 ]
do
   let n++
   echo "$n"
done

读文件

while read line
do
    echo $line
done < /etc/passwd

for do done (固定的循环)

for var in con1 con2 con3 ...
do
    程序段
done

var 是变量名
con1 con2 con3 是常量,就是具体的数据
也可以是一个已经被赋值的变量, 写法 ${val1} ${val2}
以上的例子来说,这个$var的变量内容在循环工作时:
1.第一次循环时,$var的内容为con1;
2.第二次循环时,$var的内容时con2;
3.第三次循环时,$var的内容是con3;
4....

for循环中变量的取值方式

a 从一组字符串中取值

for var in one two three four five
do 
     echo    "****************************"
     echo   '$var   is '    $var

b 从位置变量中取值

for var
do   
     echo  '-----------------------------'
     echo   '$var   is '    $var
done

c 从累计变化的格式中取值

#!/bin/bash 

for    ((var=1;var<=10;var++))
do
    echo   "------------------------" 
    echo   '$var   is '    $var
done

d 从命令结果中取值

#!/bin/bash
for   var   in   $(cat    file.txt)
do
    echo  " ------------------------" 
    echo   '$var   is '    $var
done

IFS

for i in {1..5}
do
  echo $i
done
IFS=$'\n'
for line in $(cat test.sh)
do
 echo "--------"
 echo $line
done
export IFS=$IFS          这个是按照回车符分割可以判断有多少行

break continue

上一篇 下一篇

猜你喜欢

热点阅读