开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情
书接上文,今天我们接着把流程控制补全.
您能在这里看到啥
- 循环语句
- 跳出循环指令
循环语句
对于循环,我想大家应该都不陌生.基本上我们所接触的编程语言.循环都大差不差.只是循环数据包容性或多或少的差异而已.下面我们就一起来看一下shell的循环语句吧.
-
for循环
-
for var in data
当变量值在列表里,for 循环即执行一次所有命令,使用变量名获取列表中的当前取值。命令可为任何有效的 shell 命令和语句。in 列表可以包含替换、字符串和文件名
eg:
for name in 天使 火锅 shell do echo "name is $name" done执行结果:
-
for((exp1; exp2; exp3))
exp1 、exp2 、exp3 代表三个表达式.其中exp2必须是判断条件.for循环是根据exp2的判断条件,来决定是否执行下一次循环操作
eg:
count=10 for ((i = 0; i < "$count"; i++)); do echo "$i" done执行结果:
-
-
while循环
while循环.只要不满足判断条件就一直执行循环操作.(先执行判断条件,后执行循环操作)
- 有限循环
count=1 while (( $count<=10 )) do echo $count let "count++" done - 无限循环
while : do echo "无限循环" done 或者 while true: do echo "无限循环" done
- 有限循环
-
until循环
until循环 刚好和while循环,执行顺序相反,先执行do再执行until判断条件.
eg:
count=0 until [ ! $count -lt 10 ]; do echo $count count=$((count + 1)) done执行结果:
0 1 2 3 4 5 6 7 8 9 -
case ... esac
这个和switch ... case ** 语句时一样的.都是多分枝选择结构,每一个case分支用
)开始,以;;表示break**.即此执行结束.并跳出case esac循环.eg:
case 值 in 模式1) command1 ;; esac
跳出循环指令
这个跳出循环基本上都一样,但是据我所知,还是有很多程序员.对break和continue会混淆.并且也是面试的时候,最最最基本的问题.下面我们来一起重温一下吧.
这里.我们先看一下代码.看看输出的结果是啥.这样也方便我们理解
count=10
for ((i = 0; i < "$count"; i++)); do
if [[ $((i % 2)) == 0 ]]; then
# break
# continue
# exit
# return
fi
echo "$i"
done
echo "执行完成"
-
break命令
执行结果,如下所示:
由于我们的判断条件是2的倍数.当执行第一次循环的时候,i=0,满足我们的判断条件.所以,执行了break命令.从结果中,我们可以得到初步的结论
break相当于直接结束了循环操作.并继续执行循环操作后的逻辑.
-
continue命令
执行结果,如下所示
从上面的输出结果,我们惊奇的发现,输出的都是奇数.说明执行了continue后,偶数没有被打印,也没有阻断循环操作.从中,我们得到结论是
continue只是跳出本次循环.然后会继续执行下一次循环操作.
-
exit 执行结果,如下所示
exit 直接退出脚本.并返回满足条件的值.由于我们这里判断条件是偶数,所以没有返回值.
-
return
执行结果,如下所示:
从上面的结果中,首先我们发现,有警告.通过对提示语的解读,我们得到,如果你使用return,请你使用函数来执行.那我们修改一下代码,如下所示
重新看一下执行结果.
return 直接退出当前函数.(小细节return命令不能直接使用在脚本的主程序里.只能使用在函数里)