Bash 脚本入门
Alex Scriven
Data Scientist
Python:
for x in range(3):
print(x)
0
1
2
R:
for (x in seq(3)){
print(x)
}
[1] 1
[1] 2
[1] 3
Bash 中的基本结构类似:
for x in 1 2 3do echo $x done
1
2
3
Bash 有一种简洁的数值范围写法:花括号展开:
{START..STOP..INCREMENT}for x in {1..5..2}do echo $x done
1
3
5
另一种常见写法是"三表达式"语法。
x=2)x<=4)x+=2)
for ((x=2;x<=4;x+=2))
do
echo $x
done
2
4
Bash 也可在 for 循环中用 * 做模式匹配展开,如匹配目录中的文件。
例如,假设 /books 文件夹有两个文本文件:
for book in books/*
do
echo $book
done
books/book1.txt
books/book2.txt
还记得用 $() 创建"内层 shell"吗?
也可直接用于 for 循环!
假设有如下文件结构:

我们可以遍历内层 shell 调用的结果:
for book in $(ls books/ | grep -i 'air')do echo $book done
AirportBook.txt
FairMarketBook.txt
与 FOR 循环相似,但需设置在每次迭代测试的条件。
当条件不再满足时停止迭代。
while 替代 for-le)&&(与)或 ||(或),同 IF 语句一个简单示例:
x=1while [ $x -le 3 ];do echo $x ((x+=1)) done
1
2
3
警惕无限 WHILE 循环:当退出条件永远不满足时会发生。
x=1
while [ $x -le 3 ];
do
echo $x
# 不递增 x。它永远达不到 3!
# ((x+=1))
done
这将一直打印 1!
Bash 脚本入门