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=$?
#!/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=$?