为什么这次回归失败?

时间:2014-07-24 12:52:21

标签: linux bash perl return

/tmp当然存在,但是mkdir -p在目录存在时不应该返回错误。

那么为什么以下失败?

system("/usr/bin/mkdir -p /tmp 2> /dev/null") == 0 or print("Failed");        
if ($?) {print("Failed");}

system("/usr/bin/mkdir -p /tmp 2> /dev/null");
if ($?) {print("Failed");}

从Bash我得到预期的0

# mkdir -p /tmp
# echo $?
0

1 个答案:

答案 0 :(得分:3)

/bin/mkdir而不是/usr/bin/mkdir。我知道这不仅是因为你说/usr/bin/mkdir失败了,不仅因为我看了我的(Mac OS X)系统,还因为这些低级基础程序经常在/bin因为它们是system(mkdir)需要启动系统等。

顺便说一句,你不应该使用{{1}}从Perl创建目录。我确信有很多方法可以更“原生”地进行,并且可以更好地进行错误检查。