循环是编程语言的基本概念之一。如果你需要一遍又一遍地运行一系列命令时,循环比较方便就可以做到,直到保证某一规范终止。
在比如Bash之类的编程语言中,循环对于自动执行精确性每日每日任务非常有帮助。在Bash辅助制作带有3个最基本循环词法,for循环,while循环,unitl循环。
在教学中,我们在这里详解Bash中for循环基本知识以及用于变更循环流的break和continue语句。
for循环遍历目录并执行特定命令。Bash for循环采用以下形式。LIST目录可以是由空格符分隔的一系列字符串数组,数据信息,命令导出来,二维数组等。
除了bash的for循环外,还有一种比较常见的for循环形式,就是采用C语言设计理念循环的for循环。C-style for循环的词法采用以下词法法形式。
INITIALIZATION
一部分仅在循环刚开始的时候推行一次。接着,鉴定TEST一部分。倘若为假,则for循环终止。倘若TEST为真,则运行for循环体内的指令并更新STEP
一部分。
for item in [LIST]
do
[COMMANDS]
done
#C设计理念循环
for ((INITIALIZATION; TEST; STEP))
do
[COMMANDS]
done
字符串数组
for循环遍历字符串数组列表里的所有单词,并且变量element
将设成目前英文单词。您还可以运用for循环迭代更新数组元素。
在下面新土地一个案例中是for循环遍历字符串数组,第二个案例大伙儿定义一个二维数组BOOKS
并迭代更新二维数组的每一个元素。
for element in Hydrogen Helium Lithium Beryllium
do
echo "Element: $element"
done
#
BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby')
for book in "${BOOKS[@]}"; do
echo "Book: $book"
done
范围
您可以使用编码序列关系式特殊数据信息或标志符的范围,依据定义来区域地图起点与终点,范围表达式采用形式是{START..END}
。
从Bash 4慢慢,还可以在特殊范围此外时还可以特殊增加量。在指定增加量时词法形式是{START..END..INCREMENT}
。INCREMENT
说明增加量。
去掉运用上面的形式遍历一个范围之外,你还可以使用c语言款式的for循环保证同样的效果。
在下面的代码中,依据校准i = 0
,以后在每一次迭代更新之前检查是否i ≤ 1000
。倘若为true,则打印出i
的当前值然后把变量i
提高1i
,要不然循环终止。
在下面的事例中,循环将遍历从0到3的所有数字。第二个案例是遍历0到20数据,并设置增加量标值5。
for i in {0..3}
do
echo "Number: $i"
done
#增加量形式
for i in {0..20..5}
do
echo "Number: $i"
done
#c设计理念
for ((i = 0 ; i <= 1000 ; i )); do
echo "Counter: $i"
done
break与continue声明
break和continue语句适用于控制for循环推行。break语句通常用于在满足某一规范退出循环。
倘若break语句用以置入循环,break语句将终止目前循环然后把自动控制系统交给外场循环。break语句用以并没置入的循环中,则直接退出循环。
continue语句通常用于在满足某一规范绕开循环论的运作。continue语句不易退出循环。
在下面的事例中,大伙儿迭代更新一系列数据信息,当$i等同于2时,continue语句很有可能绕开echo "Number: $i"
的运行,并继续下一次迭代更新。
应用break句子的例子中我们使用if语句辨别$element
等同于字符串数组'Lithium'
时退出循环。
for element in Hydrogen Helium Lithium Beryllium; do
if [[ "$element" == 'Lithium' ]]; then
break
fi
echo "Element: $element"
done
echo 'All Done!'
#continue声明
for i in {1..5}; do
if [[ "$i" == '2' ]]; then
continue
fi
echo "Number: $i"
done
批量改文件名文件名
下面的案例演说如何使用Bash for循环能将空格符替换为下横线来重命名文件目录中所有文本文档。
第一行创建一个for循环,并遍历其名称中透着空格符文件信息目录。* *
表达式很有可能匹配带有空格符文档。
第二行用于目录中的每个文本文档,并且用mv命令重命名文件,用下横线_
拆换空格符。${file// /_}
运用shell基本参数扩展来进行字符串替换。
最后一行done
说明循环的结束。
for file in * *; do
mv "$file" "${file// /_}"
done
大批变动文件后缀名
以下案例呈现如何使用Bash for循环能将文件后缀名从.jpeg
替换为.jpg
。本身就是重命名文件目录要以.jpeg
结尾的文本文档。
第一行创建一个for循环,并遍历一个包含.jpeg
文档,*.jpeg
说明匹配文件后缀名是jpeg
文档。
第二行用于目录中的每个最新项目,并且用mv命令同名的文本文档。${file%.jpeg}
运用shell基本参数扩展从文件名中删除.jpeg一部分。
最后一行done
说明循环的结束。到这里,您应该更好的了解如何使用bash for循环遍历目录。
for file in *.jpeg; do
mv -- "$file" "${file%.jpeg}.jpg"
done
