Bash 读取捕获输出的命令的返回值

Bash 读取捕获输出的命令的返回值,bash,Bash,通常,当我想知道某个程序是否成功时,我会这样做: mycommand RTV=$? # check if RTV is 0 MYCOMMANDRES=$(mycommand) RTV=$? # check if RTV is 0 但是,如果我想在如下变量中捕获命令的输出,该怎么办: mycommand RTV=$? # check if RTV is 0 MYCOMMANDRES=$(mycommand) RTV=$? # check if RTV is 0 美元吗?仍然包含mycomm

通常,当我想知道某个程序是否成功时,我会这样做:

mycommand
RTV=$?
# check if RTV is 0
MYCOMMANDRES=$(mycommand)
RTV=$?
# check if RTV is 0
但是,如果我想在如下变量中捕获命令的输出,该怎么办:

mycommand
RTV=$?
# check if RTV is 0
MYCOMMANDRES=$(mycommand)
RTV=$?
# check if RTV is 0

美元吗?仍然包含
mycommand
进程的返回值?

是的,它会。请注意,这并不意味着“单纯赋值”不会修改赋值。比如说

false
x=5 
echo $?
输出0,因为分配清除了状态,但是

x=$(printf 5;false)
echo $?

输出1。

是。只需使用有效和无效的命令进行尝试,即可在$?。你有没有遇到什么问题?考虑一下BASH中的特殊参数:@拉希德。我确实这么做了,但我不知道这项任务是否会改变它