我希望能够将本地变量声明为命令的结果,并且能够捕获命令的返回状态。
像这样的东西:
#!/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
(即将只读变量声明为后续命令)。