Title here
Summary here
for var in list
do
...
done
var
变量的循环体外可以正常使用。
#!/usr/bin/env bash
for var in apple banana
do
echo "hello $var"
done
echo "outside $var"
hello apple
hello banana
outside var
变量存储列表。
#!/usr/bin/env bash
list="apple banana"
list=$list" orange"
for var in $list
命令替换。
for var in $(cat file)
通配符遍历目录。
for var in /home/soda/*
环境变量 IFS(Internal Field Separator)指定了字段分隔符。
echo $IFS
默认值为空,表示以下列字符分隔。
IFS=$'\n'
IFS=$'\n:;"'
表示以换行符、冒号、分号、双引号作为分隔符。
i
变量在外部正常访问。
#!/usr/bin/env bash
for (( i = 1; i < 3; i++ ))
do
echo "index $i"
done
echo "last index $i"
index 1
index 2
last index 3
while test command
do
...
done
#!/usr/bin/env bash
i=3
while [ $i -gt 0 ]
do
echo "index $i"
i=$[ $i - 1 ]
done
index 3
index 2
index 1
多个 while
条件的时候,以最后一个条件的退出码判断。
until test command
do
...
done
#!/usr/bin/env bash
i=3
until [ $i -le 0 ]
do
echo "index $i"
i=$[ $i - 1 ]
done
index 3
index 2
index 1
支持指定退出循环的层数。
#!/usr/bin/env bash
for (( i = 0; i < 3; i++ )); do
echo "i=$i"
for (( j = 0; j < 3; j++ )); do
echo " j=$j"
if [ $j -eq 1 ]; then
break 2
fi
done
done
i=0
j=0
j=1
break
默认值是 1,表示退出 1 层循环。
#!/usr/bin/env bash
for (( i = 0; i < 3; i++ )); do
echo "i=$i"
for (( j = 0; j < 3; j++ )); do
echo " j=$j"
if [ $j -eq 1 ]; then
continue 2
fi
done
done
i=0
j=0
j=1
i=1
j=0
j=1
i=2
j=0
j=1
和 break
一样,默认也是 1。
可以对循环中的标准输出重定向。
#!/usr/bin/env bash
for var in apple banana
do
echo "hello $var"
done > output.txt
循环体的输出会生定向到 output.txt
。
循环体的输出还可以使用管道传输。
#!/usr/bin/env bash
for var in apple banana
do
echo "hello $var"
done | sort
我竟然有点喜欢 break
的语法糖。