为什么没有来自mkdir的返回代码?

时间:2014-06-05 18:29:33

标签: macos bash shell

OS = Mac OS X。
外壳是bash。

我试图验证在shell脚本中创建目录。但是,我似乎没有得到返回代码。这是shell代码:

#!/bin/bash

rv=$(mkdir lib)
echo "The code = $rv !"

if [ "$rv" == "0" ]
then
    echo "created the dir"
else
    echo "no can do, compadre."
fi

输出:

mkdir: lib: File exists
The code =  !
no can do, compadre.

无论是否创建目录,else条件始终为真,因为$rv变量永远不会是" 0"。但它似乎永远不会是任何整数。手册页说

DIAGNOSTICS
     The mkdir utility exits 0 on success, and >0 if an error occurs.

Google搜索未成功。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:5)

当你写rv=$(mkdir lib)时,你将mkdir的标准输出捕获到rv,而不是它的返回码。您可以通过阅读$?变量来访问最后一个命令的返回码,如

mkdir lib
rv=$?

答案 1 :(得分:2)

返回代码为$?

mkdir lib
echo $?

答案 2 :(得分:1)

我不知道你使用的符号是否可行,但我所知道的是命令$?允许你检索最后一个返回值。

您的代码在我自己的计算机上不起作用,但是这个代码确实如此:

#!/bin/bash

mkdir lib
rv=$?
echo "The code = $rv !"

if [ "$rv" == "0" ]
then
    echo "created the dir"
else
    echo "no can do, compadre."
fi