ksh 中的排版和返回状态

ksh 中的排版和返回状态

我希望能够将本地变量声明为命令的结果,并且能够捕获命令的返回状态。

像这样的东西:

#!/bin/ksh
typeset -r command_output=$(command)
typeset -r return_status=$?
echo "$return_status" # always 0

上面代码片段的问题是 return_status 将始终为 0,即使命令以另一个状态代码退出也是如此。

有人可以帮助我吗?

答案1

问题是typeset创建了返回状态。此代码(即同一声明中的两个赋值)对我有用:

typeset -r command_output=$(command) return_status=$?

要保持return_status可写(而不是只读),您可以执行以下操作:

typeset    command_output=$(command) return_status=$?
typeset -r command_output

(即将只读变量声明为后续命令)。

相关内容