Bash 退出代码状态脚本错误

Bash Exit Code Status script error

#!/bin/bash
# exitlab
#
# example of exit status
# check for non-existent file 
# exit status will be 2
# create file and check it
# exit status will be 0
#
ls xyzzy.345 > /dev/null 2>&1
status='echo $?'
echo "status is $status"

# create the file and check again
# status will not be 0
touch xyzzy.345

ls xyzzy.345 > /dev/null 2>&1
status='echo $?'
echo "status is $status"

#remove the file
rm xyzzy.345

edx.org 有一个实验室,这是脚本。当我运行它时,输出如下:

status is echo $?
status is echo $?

我认为输出应该是 0 或 2。我尝试像 status='(echo $?) 这样放置括号,但结果是 status is echo $?。然后,我尝试将括号放在单引号 status=( 'echo $?' ) 之外,但这给了我相同的输出 status is echo $?.

有什么想法吗?

您需要在此处使用双引号才能进行变量替换。变化

status='echo $?'

status="echo $?"

您可能会发现本指南有帮助:Bash Guide for Beginners

您正在寻找命令替换 (status=$(echo $?)),尽管这不是必需的。可以直接将$?的值赋给status:

status=$?