![ksh 中的排版和返回状态](https://linux22.com/image/5815/ksh%20%E4%B8%AD%E7%9A%84%E6%8E%92%E7%89%88%E5%92%8C%E8%BF%94%E5%9B%9E%E7%8A%B6%E6%80%81.png)
我希望能够将本地变量声明为命令的结果,并且能够捕获命令的返回状态。
像这样的东西:
#!/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
(即将只读变量声明为后续命令)。