我正在尝试在/ var / www /上打印出我的文件但由于某种原因我收到此错误: “temp.sh:第3行:FILES:命令未找到”
代码:
#loop through files
FILES = /var/www/*
for f in $FILES
do
echo "processing $f"
done
我是通过命令行从主目录运行这个,如sh script.sh(如果这很重要)
答案 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