使用 '$?' 时 bash 脚本中的表达式

Jac*_*hen 3 shell bash

我正在编写一个简单的 bash 脚本

#!/bin/bash

ls xyzzy.345 > /dev/null 2>&1
status =' echo $?'
echo "status is $status"
Run Code Online (Sandbox Code Playgroud)

它找到文件xyzzy.345并将结果记录到/dev/null. 但是当涉及到 line 时 status =' echo $?',我收到此错误:

status: Unknown job: = echo $?
Run Code Online (Sandbox Code Playgroud)

echo $?在终端中被识别。

有谁能够帮助我?我的操作系统是 ubuntu 12.04 LTS

Mic*_*mer 15

status和之间有一个额外的空间=。Bash变量赋值需要在名称和=符号之间没有空格:

status='echo $?'
Run Code Online (Sandbox Code Playgroud)

你写的是status用单个参数调用命令=' echo $?'


说了这么多,我想你可能想写的是:

status=$?
Run Code Online (Sandbox Code Playgroud)

将 的值存储$?status变量中。

如果您的实际代码稍微复杂一点,并且您想运行命令并保存值,请使用以下任一方法:

status=`echo "$?"`
status=$(echo "$?")
Run Code Online (Sandbox Code Playgroud)

这些使用命令替换来访问命令的输出。