我想 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/