我正在尝试获取某些程序的输出并将它们分配给变量。我正在使用反引号来做到这一点,但如有必要,我可以切换到不同的方法。我注意到的是,我经常没有在变量中得到预期的输出。下面是一个简单的案例。我的实际例子更复杂。无论我在反引号中运行的程序的输出是什么,我都希望它在变量中。那可能吗?
test=`echo [asdf]`
Run Code Online (Sandbox Code Playgroud)
如果我echo $test
只显示一个。
jim*_*mij 12
毕竟:
$ test="$(printf '%s' '[asdf]')"
$ printf "%s\n" "$test"
[asdf]
Run Code Online (Sandbox Code Playgroud)
最简单的答案是转义 ,[
这样它就不会被视为特殊的模式字符。(]
如果前面没有未加引号的 ,则按字面意思处理[
。)
test=$(echo \[asdf])
Run Code Online (Sandbox Code Playgroud)