Linux Bash Shell 自定义错误消息
Linux Bash Shell Custom Error Message
我正在尝试使用以下 1 行 bash shell 命令发出自定义错误消息。我没有得到 "errorMessage" 变量集。但是,如果我单独 运行 命令,我可以将错误消息捕获到 $errorMessage 变量中。 我错过了什么?
命令:
[ "errorMessage=$(mkdir -p /path/to/restricted/folder 2>&1)" ] && echo "Something Went Wrong; Error is: ${errorMessage}"
Trials/Output:
$ [ "errorMessage=$(mkdir -p /path/to/restricted/folder 2>&1)" ] && echo "Something Went Wrong; Error is: ${errorMessage}"
Something Went Wrong; Error is:
$ echo $errorMessage
$ errorMessage=$(mkdir -p /path/to/restricted/folder 2>&1)
$ echo $errorMessage
mkdir: cannot create directory `/path': Permission denied
[
是名为test
的命令;当没有给出指定 运行 的单独测试的参数时,默认值为 -n
(测试字符串是否为空)。此代码正在测试字符串 "errorMessage="
(可能带有来自 mkdir
的标准错误的后缀)是否为空;因为它包含一个固定前缀,所以它 永远不会 为空,无论是否发出任何错误。
如果您想实际为变量赋值,则应如下所示:
errorMessage=$(mkdir -p /path/to/restricted/folder 2>&1) \
|| echo "Something Went Wrong; Error is: ${errorMessage}"
这是检查 mkdir
的 退出状态 ,并且 运行 宁 echo
应该是非零的。
我正在尝试使用以下 1 行 bash shell 命令发出自定义错误消息。我没有得到 "errorMessage" 变量集。但是,如果我单独 运行 命令,我可以将错误消息捕获到 $errorMessage 变量中。 我错过了什么?
命令:
[ "errorMessage=$(mkdir -p /path/to/restricted/folder 2>&1)" ] && echo "Something Went Wrong; Error is: ${errorMessage}"
Trials/Output:
$ [ "errorMessage=$(mkdir -p /path/to/restricted/folder 2>&1)" ] && echo "Something Went Wrong; Error is: ${errorMessage}"
Something Went Wrong; Error is:
$ echo $errorMessage
$ errorMessage=$(mkdir -p /path/to/restricted/folder 2>&1)
$ echo $errorMessage
mkdir: cannot create directory `/path': Permission denied
[
是名为test
的命令;当没有给出指定 运行 的单独测试的参数时,默认值为 -n
(测试字符串是否为空)。此代码正在测试字符串 "errorMessage="
(可能带有来自 mkdir
的标准错误的后缀)是否为空;因为它包含一个固定前缀,所以它 永远不会 为空,无论是否发出任何错误。
如果您想实际为变量赋值,则应如下所示:
errorMessage=$(mkdir -p /path/to/restricted/folder 2>&1) \
|| echo "Something Went Wrong; Error is: ${errorMessage}"
这是检查 mkdir
的 退出状态 ,并且 运行 宁 echo
应该是非零的。