用于浏览目录并执行一些操作的 Bash shell 脚本

标签 bash

下午好,我有一个关于我遇到问题的脚本的问题。几年前我做了类似的事情,并以此为基础(位于不同的服务器上)。我需要从一个包含多个目录的目录运行脚本,并为每个目录创建一个目录并更改其所有权。脚本是:

#!/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/

相关文章:

bash - shell函数中的自动完成函数参数

bash - 将 sed 输出重定向到标准输入

bash - tcpdump:只输出源地址和目的地址

Bash 脚本 : Edit . txt 按行

linux - 更改目录中数十亿个文件的后缀和前缀

linux - bash中的整数比较错误

bash 完成 _parse_help 坏了?

bash - 代表标准输入的 '-' 是否有特定名称?

linux - sed 用引号替换字符串

linux - Bash 命令未在 Apache CGI Shell 中运行