bash - 如何使用 bash 运行 `mkdir -m -p` ?

标签 bash

我想 mkdir 为:

site1/www,site1/log
site2/www,site2/log
site3/www,site3/log

这些文件夹的权限是700

然后我在 Bash shell 中尝试如下脚本:

sites_arr=(site1 site2 site3)
        for sitename in ${sites_arr[@]}
        do
                mkdir $sitename
                mkdir –m 700 –p /var/${sitename}/{www/,log/}

        done

但是 mkdir –m 700 –p ${sitename}/{www/,log/} 总是给我错误:

mkdir: cannot create directory ‘–m’: File exists
mkdir: cannot create directory ‘700’: File exists
mkdir: cannot create directory ‘–p’: File exists

问题出在哪里?

最佳答案

您使用了错误类型的 破折号 字符。您输入了 en dash

mkdir –m 700 –p /var/${sitename}/{www/,log/}

但选项是用 hyphen 指定的-

mkdir -m 700 -p /var/${sitename}/{www/,log/}

这可能是某些文字处理器使用复制/粘贴魔术的结果。

使用错误类型的破折号,您键入的选项被解释为 mkdir 的多个参数,然后它会尝试创建一个名为 –m 的目录,其中一个名为700 和一个名为 –p 的。这当然会在第二次执行命令时失败,因为这些目录已经创建。

关于bash - 如何使用 bash 运行 `mkdir -m -p` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53168529/

相关文章:

python - 如何在不输入 'python ...' 的情况下运行 python 脚本

bash - FFMPEG 会尝试转码为相同的编码吗?

linux - 我可以通过 sudo -u 伪装的身份列表

bash - 从 bash 脚本运行时 grep 失去颜色

python - 有什么方法可以通过heredocs在python中通过ssh允许STDIN吗?

linux - Bash 脚本日期错误

bash - bash 中的多行赋值

bash - 如何将变量设置为 Bash 中命令的输出?

Bash ERR 信号没有被困在程序中?

bash - 如何在 bash 脚本中创建 for 循环?