shell脚本之流程控制

所谓的shell脚本是什么呢,不过是包含一些命令和声明,符合一定格式的文本文件,在给予这个文本文件执行权限之后,就可以执行这个脚本,实际上就是执行脚本中的一大堆命令。zia脚本中用到最多的就是循环语句了;只有循环语句才能把这一堆的命令条件性的执行下去。shell脚本中的格式要求就是首行的shebang机制,表示出来就是#!
这个机制决定了我们的脚本语言类型。如下:

[root@localhost张大帅哥 bin]# vim txt
#!/bin/bash
~                                                                                     
~             

一般来说用的都是bash,也#!/usr/bin/python #!/usr/bin/perl

接下来就能写脚本了。
今天在这里我只介绍脚本中的流程,也就是写到脚本中的命令执行顺序,这里涉及到顺序执行,循环执行,条件执行
顺序执行没什么说的,就是命令从上到下执行命令之间可以以分号为间隔,也可以以换行代替分号。
顺序执行

#!/bin/bash
echo "hello"
echo "world"
echo "nihao"
[root@localhost张大帅哥 bin]# vim txt
[root@localhost张大帅哥 bin]# chmod +x txt 
[root@localhost张大帅哥 bin]# ./txt
hello
world
nihao

按照从上到下的顺序依次执行。
循环执行
所谓循环执行,就是某一条命令在一个循环体内一直执行,直到手动结束或者不再符合循环条件跳出,不再执行。
for循环
for循环的格式是
for 变量 in 循环条件;do
循环体
done
示例:

#!/bin/bash
for n in {1..10};do
        echo $n
done

[root@localhost张大帅哥 bin]# ./txt
1
2
3
4
5
6
7
8
9
10

这个循环是可以嵌套的,例如打印九九乘法表

#!/bin/bash
i=0
j=0
for i in {1..9};do
    for j in {1..9};do
        if [ $i -ge $j ];then
        echo -n "$j*$i=$[$i*$j] " 
        fi
    done
    echo
done
[root@localhost张大帅哥 bin]# ./jiujiu.sh 
1*1=1 
1*2=2 2*2=4 
1*3=3 2*3=6 3*3=9 
1*4=4 2*4=8 3*4=12 4*4=16 
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

while循环
格式为
while 控制条件 ;do
循环体
done
在每次循环的时候会做出判断,如果是true执行循环体,如果是false,则跳出,例如

#!/bin/bash
n=1
while [ $n -le 10 ];do
        echo $n
        let n++
done
[root@localhost张大帅哥 bin]# ./txt
1
2
3
4
5
6
7
8
9
10

如用while打印九九乘法表

#!/bin/bash
i=1
j=1
while [ $i -le 9 ];do
    while [ $j -le $i ];do
      echo -n "$j*$i=$[$i*$j] "
      let j++
    done
    i=$[$i+1]
        j=1
    echo
done

until循环
这个循环跟while正好相反,while是不满足循环条件的时候退出,而until是满足循环条件的时候退出,用法也跟while一样
例如

#!/bin/bash
n=1
until [ $n -eq 11 ];do
        echo $n
        let n++
done
[root@localhost张大帅哥 bin]# ./txt
1
2
3
4
5
6
7
8
9
10

条件执行
条件执行就是满足某一特定条件执行某特定语句
case条件执行
case一般用于某一变量等于或者满足某一格式的多个字符而执行不同的命令的时候。
case 变量引用 in
PAT1);;
PAT2);;
esac
这里的PAT字符支持文件名通配符,esac就是case反过来写作为结束标记,每一个条件后面要打双分号表示这个条件的命令执行结束,例如

#!/bin/bash
case $1 in
        1)echo "hello";;
        2)echo "world";;
        *)echo "no";;
esac
[root@localhost张大帅哥 bin]# ./txt
no
[root@localhost张大帅哥 bin]# ./txt 1
hello
[root@localhost张大帅哥 bin]# ./txt 2
world

if条件执行
很明显,if意思是如果,如果满足条件则执行,格式
if 判断条件 ;then
分支 代码
elif 判断条件;then
分支代码
else
分支代码
fi
跟case差不多,fi是结束符

#!/bin/bash
if [ $1 -eq 1 ];then
        echo "hello"
elif [ $1 -eq 2 ];then
        echo "world"
else
        echo "no"
fi
[root@localhost张大帅哥 bin]# ./txt 0
no
[root@localhost张大帅哥 bin]# ./txt 1
hello
[root@localhost张大帅哥 bin]# ./txt 2
world
[root@localhost张大帅哥 bin]# vim txt

select条件执行
select是一个菜单样式的条件执行语句,在这里PS3是等待用户输入的提示语,在这里可以看出select经常结合case
使用。
例如

#!/bin/bash 

fruits=( 
  "apple"
  "pear"
  "orange"
  "watermelon"
) 

echo "Please guess which fruit I like :"
select var in ${fruits[@]} 
do
  if [ $var = "apple" ]; then
    echo "Congratulations, you are my good firend!"
    break
  else
    echo "Try again!"
  fi
done

[root@localhost张大帅哥 bin]# ./select.sh 
Please guess which fruit I like :
1) apple
2) pear
3) orange
4) watermelon
#? 2
Try again!
#? 3
Try again!
#? 4
Try again!
#? 1
Congratulations, you are my good firend!

可以看到这里有一个#?看着很不具有亲和力,我们就可以通过设置PS3去把它改掉

#!/bin/bash
PS3='please choose: '

[root@localhost张大帅哥 bin]# ./select.sh 
Please guess which fruit I like :
1) apple
2) pear
3) orange
4) watermelon
please choose: 1
Congratulations, you are my good firend!

这样就行了,脚本中涉及数组,我会在以后的博文中更新的,脚本涉及的东西很多,很考验对命令的熟练使用,以及逻辑能力。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Shell脚本是一种编程语言,可以用来自动化执行一系列命令。流程控制Shell脚本中的重要概念,它可以让脚本根据不同的条件执行不同的命令。以下是Shell脚本入门流程控制的步骤: 1. 学习基本语法:Shell脚本的基本语法包括变量、函数、条件语句、循环语句等。需要先掌握这些基本语法,才能进行流程控制。 2. 理解条件语句:条件语句可以让脚本根据不同的条件执行不同的命令。常见的条件语句有if语句、case语句等。 3. 掌握循环语句:循环语句可以让脚本重复执行一系列命令,直到满足某个条件。常见的循环语句有for循环、while循环等。 4. 组合流程控制语句:在实际应用中,常常需要组合使用条件语句和循环语句,以实现更复杂的流程控制。 5. 实践练习:通过实践编写一些简单的Shell脚本,加深对流程控制的理解和掌握。 总之,掌握Shell脚本流程控制是编写高效、灵活的脚本的关键。需要不断学习和实践,才能掌握这一技能。 ### 回答2: 在学习shell脚本时,流程控制是一个非常关键的概念。它指的是在脚本执行期间,根据条件或者需要,在特定的时刻控制程序流程的方式。以下是一些入门流程控制的知识点。 1. 条件语句:if-elif-else语句 if-elif-else是一种基本的条件语句,用于根据不同的条件执行不同的语句块。其语法如下: ``` if 条件1; then 语句块1 elif 条件2; then 语句块2 else 语句块3 fi ``` 例如: ``` if [ $a -gt $b ]; then echo "a > b" elif [ $a -lt $b ]; then echo "a < b" else echo "a = b" fi ``` 2. 循环语句:for和while语句 for语句可以用于遍历列表或者执行一段代码固定的次数,其语法如下: ``` for item in 列表; do 语句块 done ``` 例如: ``` for file in $(ls); do echo $file done ``` while语句可以用于在某个条件满足时反复执行一段代码,其语法如下: ``` while [ 条件 ]; do 语句块 done ``` 例如: ``` while true; do echo "hello world!" sleep 1 done ``` 3. 跳出循环:break和continue break语句可以用于跳出当前的循环,其语法如下: ``` for i in $(seq 1 10); do if [ $i -eq 5 ]; then break fi echo $i done ``` continue语句可以用于跳过循环中的某个步骤,继续执行下一轮循环,其语法如下: ``` for i in $(seq 1 10); do if [ $i -eq 5 ]; then continue fi echo $i done ``` 以上就是shell脚本入门流程控制的一些基本知识点。可以通过不断练习和实践,在实际的脚本编写中熟练掌握这些语法,来实现更高效、灵活的脚本编写。 ### 回答3: Shell脚本是一种文本文件,其中包含了一系列的Shell命令。在Linux中,Shell脚本是一种非常常见的自动化工具,可用于自动化执行任务。Shell脚本不仅可以用于自动化执行任务,还可以用于流程控制Shell脚本流程控制主要包括以下几种: 1. 条件语句 Shell脚本条件语句主要包括if-then语句和case语句。if-then语句是用于检查条件是否为真的语句,如果条件为真,则执行then中的命令。case语句则可以匹配多个条件,如果匹配成功,则执行相应的命令。 2. 循环语句 Shell脚本循环语句主要包括for、while、until等语句。for循环语句通常用于遍历数组或者一系列的值。while和until循环语句则可以用于重复执行多个命令,直到满足条件为止。 3. 函数语句 Shell脚本函数语句可以用于封装一组命令,以便可以在需要的时候使用。定义函数需要使用function命令,函数可以有参数和返回值。 4. 跳转语句 跳转语句可以用于从一个语句跳转到另一个语句,包括break、continue、return等语句。break语句可以在循环语句中使用,用于退出循环。continue语句可以跳过循环中的某些命令,继续执行循环。return语句用于从函数中返回值。 5. 注释语句 Shell脚本中的注释可以用于解释代码的功能和用途,也可以用于临时禁用某些命令。注释语句以#开头,可以在一行中或者多行中使用。 以上是Shell脚本流程控制的基本概念和语法。通过使用这些语句,可以编写出功能强大的Shell脚本,实现自动化流程控制

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值