shell编程控制结构:expr、let、for、while、until、shift、if、case、break、continue、函数、select
  9Vj5CoaT2Jpa 2023年11月13日 19 0


1、expr计算整数变量值

s=`expr 2 + 3`

运算符号和参数之间要有空格分开;

2、let命令

let s=(2+3)*4

echo $s

3、for语句


for 变量 in 列表


do


命令行(通常用到循环变量)


done


#!/bin/bash
for var in one two three four five
        do
                echo ------
                echo '$var is' $var
        done



以命令返回值作为列表
#!/bin/bash
for var in `ls`
        do
                echo -----
                echo $var
        done



4、while语句

语法格式:

while      表达式 

do

命令行

done

#!/bin/bash
num=1
while [ $num -le 10 ]
do
echo -e "\t the num is $num"
let num=num+1
done



5、until语句

语法格式:

unitil      表达式 

    do

命令行

    done

#!/bin/bash
sum=0
num=10
until test $num -eq 0
        do
                sum=`expr $sum + $num`
                num=`expr $num - 1`
        done
echo "sum = $sum"



6、shift语句



shift语句:将变量的值依次向左传递,并形成一组新的参数值

例:位置变量当前值为:1=file1 2= file2 3=file3

        执行一次shift后为:1=file2 2=file3

还可以在shift命令中指定位置变量转移的次数

shift n

#!/bin/bash
while [ -n "$*" ]
        do
                echo $1 $2 $3 $4 $5 $6
                shift
        done



7、if语句

if 语句的一般形式 :

if   条件表达式

then  #当条件为真时执行以下语句

         命令列表

else #当条件为假时执行以下语句

         命令列表

fi

#!/bin/bash
if test -f "$1"
        then
        echo "$1 is an ordinary file"
else
        echo "$1 is not an ordinary file"
fi



8、case语句

   取值后面必须为单词in,每一个模式必须以右括号结束。取值可以为变量或常数。取值检测匹配的每一个模式,一旦模式匹配,其间所有命令开始执行直至;;。执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用*号捕获 该值,再接受其他输入。


 

[注]

1.模式字符串中可以使用通配符

2.如果一个模式字符串中包含多个模式,那么各模式之间应以竖线(|)隔开,表各模式是“或”的关系,即只要给定字符串与其中一个模式相配,就会执行其后的命令列表。

3.各模式字符串应是唯一的,不应重复出现,并且要合理安排它们的出现顺序,例如,不应将“*”作为头一个模式字符串,因为“*”可以与任何字符串匹配,若第一个出现,就不会再检查其他模式了。

4.case语句以关键字case开头,以关键字esac结束。

5.case的退出(返回)值是整个结构中最后执行的命令的退出值。若没有执行任何命令,则退出值为0.


#!/bin/bash
case $1 in
1)
        echo " you choice is 1";;
2)
        echo " your choice is 2";;
*)
        echo " your choice is others";;
esac



9、break与continue


1、break:用于立即终止当前循环的执行,break命令可以使用户从循环体中退出来。

语法:break[n] ,其中,n表示要跳出几层循环,默认值为1

2、continue:跳过循环体中在其之后的语句,会返回到本循环层的开头,进行下一次循环。

语法:continue[n],其中,n表示从包含continue语句的最内层循环体向外跳到第几层循环,默认值为1,循环层数是由内向外编号。


10、函数

  函数:由函数标题和函数体两部分组成。标题是函数名。函数体是函数内在的命令集合。标题名称必须唯一。变量均为全局变量,没有局部变量。

#!/bin/bash
num=1
hello()
{
        echo "hello boy~ It's our $num meeting"
        let num=num+1
}



11、select语句

格式:


select 变量 in 列表

do

命令行(通常用到循环变量)

done



    制作一个选择表,在列表中选择一个选项执行命令行。如果选择的变量不在列表序列中,则返回一个空值。需要用break退出循环。

#!/bin/bash
echo "a is 5 ,b is 3. Please select your method: "
a=5
b=3
select var in "a+b" "a-b" "a*b" "a/b"
do
        break
done
case $var in
"a+b")
        echo 'a+b= '`expr $a + $b`;;
"a-b")
        echo 'a-b= '`expr $a - $b`;;
"a*b")
        echo 'a*b= '`expr $a \* $b`;;
"a/b")
        echo 'a/b= '`expr $a / $b`;;
*)
        echo "input error"
esac







【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  bYdMetjCLs2g   2023年11月28日   21   0   0 bash
  wwLZeziuqjLR   2023年12月08日   97   0   0 Dockercentosbash
  mjtHZIki74si   2023年12月06日   28   0   0 ubuntubash
  hHWnOnebRjW2   2023年11月27日   23   0   0 PostgreSQLsqlbash
  vxoexqgjyiCS   2023年11月25日   19   0   0 linuxbash数组