Shell中的循环


shell中循环的一般写法如下

fori

shell for 循环默认是按照空格进行分隔的

for (( i = 0; i < n; i++ )); do
    :
done

for in

for i in a b c ; do
...        
done

变量

但是如果我们需要循环的数据在某个变量里面,例如 list=“a b c”,此时我们是写成 for i in ${list} 呢?还是写成 for i in "${list}" 呢。主要是有引号和没有引号的区别。虽然推荐读取变量的时候要求尽量用引号包裹,但这里如果用引号包裹了结果就会是错误的。

结论是我们不能在使用引号了,如果使用引号,那么就会把 ${list} 当成一个整体进行处理了

for i in a b c ; do
...        
done

数组

fruits=("apple" "banana" "orange")
for fruit in "${fruits[@]}"
do
  echo "I like $fruit"
done

数字

for i in {1..5}
do
  echo "Number: $i"
done

until

count=0
until [ $count -eq 5 ]
do
  echo "Count: $count"
  count=$((count + 1))
done

while

while []

count=0
while [ $count -lt 5 ]
do
  echo "Count: $count"
  count=$((count + 1))
done

逐行读文件

while IFS= read -r line
do
  echo "Line: $line"
done < file.txt

逐行读变量

echo "${result}"|while read line;do
  echo "Line: $line"
done

这种写法有坑,参考


评论
  目录