Bash 将命令输出分配给变量,并在返回值上执行if分支

Bash 将命令输出分配给变量,并在返回值上执行if分支,bash,Bash,我想做下面的事情 X=$(some_command) if [ $? == 0 ]; then do_something echo $x else do_something_else fi 基本上,我想执行一些命令,将输出存储到某个变量。同时,我想根据命令是否成功进行分支。上述方法可行,但看起来很难看。这是一种更聪明的方式吗 谢谢 if x=$(some command); then do_something echo $x else do_something_else

我想做下面的事情

X=$(some_command)
if [ $? == 0 ]; then
  do_something
  echo $x
else
  do_something_else
fi
基本上,我想执行一些命令,将输出存储到某个变量。同时,我想根据命令是否成功进行分支。上述方法可行,但看起来很难看。这是一种更聪明的方式吗

谢谢

if x=$(some command); then
  do_something
  echo $x
else
  do_something_else
fi
if
命令通过运行该命令并测试它是否成功,然后根据它执行
else
分支来工作


如果
命令通过运行该命令并测试其是否成功来工作,然后根据它执行
否则
分支。

这实际上会打开程序的返回值吗?是,
if
测试与OP问题中的
$?
赋值相同的东西。它有效。我现在不能接受,因为SO有10分钟的时间限制。哇,这看起来真像是一个新的程序员错误(
if(x=5)
,而不是
if(x=5)
)。有趣,+1是的,我同意它看起来很奇怪。我不确定我是否主张这样做,因为这可能会让人困惑。原始代码非常清楚地说明了发生了什么。这是否真的打开了程序的返回值?是的,
如果
测试与OP问题中的
$?
赋值相同的东西,它会起作用。我现在不能接受,因为SO有10分钟的时间限制。哇,这看起来真像是一个新的程序员错误(
if(x=5)
,而不是
if(x=5)
)。有趣,+1是的,我同意它看起来很奇怪。我不确定我是否主张这样做,因为这可能会让人困惑。原始代码非常清楚地说明了发生了什么。