下午好,我有一个关于我遇到问题的脚本的问题。几年前我做了类似的事情,并以此为基础(位于不同的服务器上)。我需要从一个包含多个目录的目录运行脚本,并为每个目录创建一个目录并更改其所有权。脚本是:
#!/bin/bash for DIR in *; do mkdir $DIR/photos2; chown apache:apache $DIR/photos2; chmod 777 $DIR/photos2; done
尝试运行时,我收到 - 意外标记“do”附近出现语法错误
我确信我错过了一些愚蠢的事情,任何帮助将不胜感激。
最佳答案
当脚本采用 DOS
格式时,我见过一些有趣的事情。
您是否有机会在 Windows 平台上编写代码并尝试从其他地方的 bash shell 运行它?
在bash shell上,通常会有一个名为dos2unix
的命令,如果找到它,请尝试运行,
dos2unix scriptname
然后再次运行脚本。
再检查一次,您确定有错误提示“意外标记“do””而不是“done”吗?
无论如何,我建议你阅读for loop at the bash guide
同时,这应该从基本目录中完成您的工作(而您的文件名没有空格字符)。
#!/bin/bash
for DIR in $(find . -type d);
do
mkdir $DIR/photos2;
chown apache:apache $DIR/photos2;
chmod 777 $DIR/photos2;
done
关于用于浏览目录并执行一些操作的 Bash shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1039731/