下午好,我对我遇到问题的脚本有疑问。几年前我做了类似的事情,基于此(基于不同的服务器)。我需要从一个目录中运行脚本,该目录中包含许多目录,并且每个目录都要创建一个目录并更改其所有权。脚本是:
#!/bin/bash for DIR in *; do mkdir $DIR/photos2; chown apache:apache $DIR/photos2; chmod 777 $DIR/photos2; done
尝试运行时,我得到 - 意外标记“do”
附近的语法错误我确信这是愚蠢的,我很遗憾,任何帮助都会受到赞赏。
答案 0 :(得分:2)
你可能想做这样的事情:
#!/bin/bash
for DIR in *; do
if [ -d "$DIR" ]; then
mkdir "$DIR/photos2"
chown apache:apache "$DIR/photos2"
chmod 777 "$DIR/photos2"
fi
done
答案 1 :(得分:2)
我看到脚本处于DOS
格式时会发生有趣的事情
您是否有机会在Windows平台上编写代码并尝试从其他地方的bash shell运行代码?
在bash shell上,通常会有一个名为dos2unix
的命令,如果找到它,请尝试运行,
dos2unix scriptname
然后再次运行脚本。
还有一项检查,你确定你有一个错误说“意外令牌'做''而不是'完成'吗? 无论如何,我建议你阅读for loop at the bash guide
同时,这应该从基本目录开始工作(而你的文件名没有SPACE字符)。
#!/bin/bash
for DIR in $(find . -type d);
do
mkdir $DIR/photos2;
chown apache:apache $DIR/photos2;
chmod 777 $DIR/photos2;
done
答案 2 :(得分:1)
for DIR in *
do
或
for DIR in *; do