概述
while语句
- 格式:
-
while 测试条件 do 命令表 done # or while 测试条件; do 命令表 done
- 执行过程:先进行条件测试,如果结果为真,则执行循环体(关键字do和done之间的命令表),然后再做条件测试...直到测试条件为假时,才终止while语句的执行。
#! /bin/bash
# while.sh
while [ $1 ]
do
if [ -f $1 ];then
echo -e "ndisplay:$1"
cat $1
else
echo "$1 is not a file name."
fi
shift
done
- 这个程序对各个给定的位置参数,首先判断其是否为普通文件,若是,则显示其内容,否则,显示它不是文件的信息,每次循环处理一个位置参数$1,利用shift明林两个把后续位置参数左移。
until语句
- 格式:
-
until 测试条件 do 命令表 done # or until 测试条件; do 命令表 done
- until与while语句比较相似,知识测试条件不同,就是说当测试条件为假时,才执行循环体中的命令表,直到测试条件为真时终止循环
-
#! /bin/bash # until.sh until [ -z "$2" ]; do cp $1 $2 shift 2 done if [ -n "$1" ]; then echo "bad parameter!" fi
- 如果第二个位置参数不为空,就将文件1复制给文件2,然后将位置参数左移两个位置,接着重复上面过程,直至没有第二个位置参数为止,测试第一个位置参数,如果不为空,则打印参数不正确
for语句
- for语句主要有两种使用方式:一种是值表方式,另一种是算术表达式方式
- 值表方式:
- 格式:
-
for 变量 [in 值表] do 命令表 done # or for 变量 [in 值表]; do 命令表; done
-
#! /bin/bash # for.sh for day in Monday Wednesday Friday Sunday do echo $day done
-
#! /bin/bash # for_test.sh week={Mon Tue Wed} for i in "${week[@]}"; do echo $i; done
#! /bin/bash
for 变量 in 文件正则表达式
do
命令表
done
# 比如
for file in *.sh; do wc -w $file; done
- 算术表达式方式
- 格式:
-
for ((e1; e2; e3)); do 命令表; done # or for ((e1; e2; e3)); do 命令表 done
- 用法就很像c语言中的循环,3个算术表达式(e1,e2,e3),没有填则默认为1(这里1为真,0为假)
break,continue,exit
- break:退出循环体
- 格式:break [n],n是一个整数,表示跳出几层循环,默认为1
-
#! /bin/bash # break.sh num=$1 while true; do echo -n "$num" if ((--num == 0)); then break; fi done echo "bye"
- continue:跳过本次循环在continue后面的语句,回到本层循环的开始,进行下一次循环
- 格式:continue [n],其中n表示从包含continue的语句的那层循环体向外跳出几层循环,默认为1
-
#! /bin/bash # continue.sh num=$1 for ((i=0; i<num; i++)); do if ((i % 2 == 0)); then continue fi echo -n "$i " done echo "bye"
exit命令
- exit命令的功能式立即退出,并设定退出状态(返回值)
- 格式:exit [n]
- 为显式给出n的话,则退出状态为最后一个命令的执行状态
select语句
- select语句通常用于菜单的设计,它自动完成 接收用户输入的整个过程,包括显示一组菜单项以及读取用户的选择
- 格式:
-
select identifier [in word...] do 命令表 done
- 如果省略in word,那么参数identifier以位置参数作为给定的值
-
#! /bin/bash # select.sh PS3="Choice? " select choice in query add delete update exit do case "$choice" in query) echo "Call query routine"; break;; add) echo "Call add routine"; break;; delete) echo "Call delete routine"; break;; update) echo "Call update routine"; break;; exit) echo "Call exit routine"; break;; esac done echo "you input $REPLY; your choice is: $choice" echo "bye"
- PS1:命令行提示符,PS2:命令内提示符,PS3:用于select;REPLY是环境变量,将用户输入的值赋值给REPLY
最后
以上就是等待中心为你收集整理的Linux--shell编程--循环结构的全部内容,希望文章能够帮你解决Linux--shell编程--循环结构所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复