Linux/Unix shell脚本 bash foreach循环示例

时间:2019-11-20 08:52:59  来源:igfitidea点击:

问题

在csh shell上可以使用foreach循环。
在Linux上运行的bash shell中如何使用foreach循环?

解决方案

C外壳(csh)或改进版本tcsh是1970年代后期的Unix外壳。 csh foreach循环语法如下:

foreach n ( 1 2 3 4 5 )
  #command1
  #command2
end

但是,bash缺少foreach语法。

只能使用bash while,for等循环替代。

Bash foreach循环示例

假设我们要转换以下csh forloop循环:

foreach i ( * )
echo "Working $i filename ..."
end

在csh或tcsh foreach上方,使用循环显示了文件列表。
bash shell中的类似代码:

for i in *
do
  echo "Working on $i file..."
done

如果是处理文件,还可以使用find命令查找并安全地处理包含换行符,空格和特殊字符的文件名。

find /dir/ -print0 | xargs -r0 command
find /tmp/test -print0 | xargs -I {} -r0 echo "Working on "{}" file ..."
find /tmp/test -type f -print0 | xargs -I {} -r0 echo "Working on '{}' file ..."