Linux Bash Shell自定义错误消息

时间:2017-08-03 04:00:56

标签: bash error-handling custom-error-handling

我尝试使用以下1个bash shell命令发出自定义错误消息。我没有得到" errorMessage" var set。但是,如果我单独运行该命令,我能够将错误消息捕获到$ errorMessage变量中。 我缺少什么?

命令:

func validateDouble(text: String) -> Bool {
    var result = false

    // test input to see if it is a positive Double once text is converted
    if let doubleValue = Double(text) {
      if doubleValue > 0.0 {
        result = true
      }
   }   
}

试验/输出:

[ "errorMessage=$(mkdir -p /path/to/restricted/folder 2>&1)" ] && echo "Something Went Wrong; Error is: ${errorMessage}"

1 个答案:

答案 0 :(得分:2)

[是名为test的命令;如果没有给出指定要运行的单个测试的参数,则默认值为-n(测试字符串是否为空)。此代码正在测试字符串"errorMessage="(可能带有来自mkdir的stderr的后缀)是否为空;因为它包含一个固定的前缀,所以永远不会为空,无论是否发出任何错误。

如果您想要为变量实际分配一个值,那么看起来就像:

errorMessage=$(mkdir -p /path/to/restricted/folder 2>&1) \
  || echo "Something Went Wrong; Error is: ${errorMessage}"

这是检查mkdir退出状态,运行echo应该是非零。