.sh脚本不会让我循环文件

时间:2014-08-12 00:48:57

标签: bash ssh debian

我正在尝试在/ var / www /上打印出我的文件但由于某种原因我收到此错误: “temp.sh:第3行:FILES:命令未找到”

代码:

#loop through files FILES = /var/www/* for f in $FILES do echo "processing $f" done

我是通过命令行从主目录运行这个,如sh script.sh(如果这很重要)

1 个答案:

答案 0 :(得分:2)

要在sh中设置变量,=字符之前或之后不能有任何空格。将您的代码更改为

FILES=/var/www/*

但是,如果/var/www中的任何文件的名称中都有空格,则会出现问题,因为它们会在for行中的变量替换后拆分。因此,如果有name with space这样的文件,您就会得到

processing /var/www/name
processing with
processing space

您可以通过在<{1}}命令中直接放置模式来避免这种情况,因为在分词之后路径名扩展会发生

for

您将获得for f in /var/www/*; do echo "processing $f" done

或者,您可以为目录使用变量 - 您只需要确保通配符位于processing /var/www/name with space行中,以便以正确的顺序进行扩展/拆分:

for