![脚本编写:[! -d dir ] 含义](https://linux22.com/image/107710/%E8%84%9A%E6%9C%AC%E7%BC%96%E5%86%99%EF%BC%9A%5B%EF%BC%81%20-d%20dir%20%5D%20%E5%90%AB%E4%B9%89.png)
if [ ! -d /home/dir ]; then
mkdir /home/dir
fi
我和我的一个朋友有一天在课堂上遇到了这个问题,我们对此都有不同的答案,但我有点想向他证明我可能是对的。
他说它“仅当目录 /home/dir 不存在时才创建它”
我说不,它“删除目录 /home/dir 然后再次创建它”
谁是对的?...或者我们都错了?
答案1
你的朋友几乎是对的,脚本/home/dir
仅在它还不是目录时才创建。 (如果是其他东西,mkdir
将运行但会失败。)
[
引入一个测试,这里是! -d /home/dir
;-d /home/dir
检查是否/home/dir
存在并且是一个目录,然后!
否定它。所有这些都包含在if
/中then
意味着如果/home/dir
还不是目录,mkdir /home/dir
则运行。
具体来说,用mkdir
一种更简洁的方式来编写所有内容
mkdir -p /home/dir
答案2
你的朋友是对的。就像“如果不是就是一个目录”
但告诉他你可以放弃整个条件并只写mkdir -p /home/dir