我想在bash中执行一个字符串中的命令,并捕获输出和退出代码.
我已经搜索了一下并在这里搜索,但我没有得到明确的结果.该猛砸FAQ#50被称为了很多,在很大程度上是一种居高临下试图从做disuade人.例如,我的一个原因是日志记录,但回显到终端使用的命令set -x不是日志记录,并且复杂命令的输出过多且不直观,当我想要确定我已经记录了我的脚本运行的确切命令时,而不是在未来的某个时刻无法更新的复制和粘贴</rant>.我详细解释这个问题的原因是关于这个主题的大多数问题都被重复关闭,但是执行字符串和捕获输出的具体要求似乎没有被表示出来.
这是一个简化的例子.
CMD="echo 'a*b*c' | cut -d '*' -f 2"
Run Code Online (Sandbox Code Playgroud)
输出应该是b.现在我想要的是返回代码(EXITCODE=$?)和输出.在我看来,这似乎是一个直截了当的案例,但我无法到达那里.我在网上搜索过的东西(这些都是网上发现的东西):
OUTPUT=eval $CMD # "", ec 0 , note: $CMD is echoed to shell
OUTPUT=eval "$CMD" # "", ec 127, note: command not found
OUTPUT=eval $($CMD) # "", ec 127, note: command not found
OUTPUT=$("$CMD") # "", ec 127, note: command not found
OUTPUT=`$CMD` # "echo 'a*b*c' | cut -d '*' -f 2", ec 0
OUTPUT=$($CMD) # "echo …Run Code Online (Sandbox Code Playgroud)