shell编写for循环(shell循环语句)

在Linux的Bash shell中,for compound命令可以用来循环执行指定的语句。该命令有两种不同的格式。查看man bash中for命令的描述,描述如下。
对于名称[ [ in [ word.] ] ;]做清单;为名称[在[ word.] ] ;]做清单;完成扩展in后面的单词列表,生成项目列表。变量名被依次设置到这个列表的每个元素中,每次都执行list。
如果省略in字,for命令将对设置的每个位置参数执行一次list。
返回状态是执行的最后一个命令的退出状态。如果in后面的项目扩展导致空列表,则不执行任何命令,返回状态为0。
这种格式的for命令首先展开单词列表得到一个数组,然后依次给单词列表的每个元素赋值name变量,每次赋值执行列表指定的语句。
如果没有提供单词列表,则遍历传入脚本或函数的参数列表。
假设有一个testfor_each.sh脚本,其内容如下:
#!/bin/bashfor word在这是‘for’的一个例子;do echo-n ‘ $ word“| tr A-z A-Zdoneechofor param;do echo-n ‘ $ param ‘ | tr a-z a-zdone echo该脚本首先使用for命令遍历其中的每个单词,这是“for”的一个示例,然后打印word内容,并使用tr命令将小写字母转换为大写字母。
之后继续使用for命令在执行脚本时遍历参数表,打印参数值,将大写字母转换成小写字母。for param语句不提供in word参数,默认情况下,它将遍历传入脚本的位置参数。
执行testfor_each.sh脚本,结果如下:
$./test for _ each.sh使用位置参数测试“for”命令这是for的示例。使用位置参数测试“for”命令的执行结果有一点需要注意,这是“for”的一个示例,为。用双引号括起来,但打印结果没有双引号。这是因为bash在解析时会删除双引号。
这里的双引号不是字符串本身的内容,而是用来定义双引号内部的字符串是一个整体。
如果要打印出双引号,需要用\ ‘,比如上面的\’FOR\ ‘进行转义,打印出来的结果就包含了双引号。
for((expr 1;expr2expr 3));做清单;done for((expr 1;expr2expr 3));做清单;首先,根据下面在算术求值下描述的规则对算术表达式expr1求值。
然后重复计算算术表达式expr2,直到其计算结果为零。
每次expr2计算为非零值时,执行list并计算算术表达式expr3。
如果省略任何表达式,它的行为就好像计算结果为1一样。
返回值是列表中执行的最后一个命令的退出状态,如果任何表达式无效,则返回值为false。
注意:在这种格式的for命令中,expr1、expr2、expr3都是算术表达式。使用bash算术表达式,具体写法请参考man bash中的’算术求值’小节和'((expression))’表达式的描述。
假设有一个testfor_expr.sh脚本,其内容如下:
#!/bin/bash declare count declare count _ strMAX=10 for((I=0;i MAXI));do((count=$ I))count _ str=$ idone echo ‘ count=$ count ‘ echo ‘ count _ str=$ count _ str ‘执行此脚本的结果如下:
$./test for _ expr . sh count=45 count _ str=0123456789可以看出,你不得不用((count=$i))作为写方法来进行算术运算,这样count变量的值就可以像整数一样进行加减运算。写出count_str=$i的形式,其实就是字符串拼接。
在上面的两个括号中,MAX变量的值不带$符号,这是允许的。当然也可以写成$MAX。
如果想提前跳出循环,可以使用break命令。参见man bash对break命令的描述如下:
从持续、持续、直到或挑选循环中退出。如果指定了n,则划分n个级别…n。必须 1。如果n大于封闭循环的数量,则退出所有封闭循环。
除非n不大于或等于1,否则返回值为0。
即,打破命令可以跳出为循环、当循环、直到循环、和挑选循环。

余生非常幸福甜蜜的4大生肖(余生非主流网名)

2022-8-7 12:21:55

好玩下载

简体中文版小决定无广告下载

2023-8-19 16:47:34

购物车
优惠劵
搜索