Fre*_*red 0 variables bash command
我做了一个命令女巫返回'版本:X'.
即:
$>./mybox -v
$>version:2
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这不起作用:
$>VERSION=$( /home/mybox -v | sed 's/.*version:\([0-9]*\).*/\1/')
$>echo $VERSION
$>
Run Code Online (Sandbox Code Playgroud)
如果我写这个,没关系:
$>VERSION=$( echo "version:2" | sed 's/.*version:\([0-9]*\).*/\1/')
$>echo $VERSION
$>2
Run Code Online (Sandbox Code Playgroud)
问候
发送版本/错误/调试信息很常见stderr,而不是stdout.从终端运行命令时,两者都将被打印,但只会stdout通过管道进行打印sed.
echo输出总是stdout默认输入,这就是为什么你没有遇到麻烦.
如果以上是正确的,您只需要将stderr(文件描述符2)重定向到stdout(文件描述符1),然后再传递它:
VERSION=$( /home/mybox -v 2>&1 | sed 's/.*version:\([0-9]*\).*/\1/')
# ^^^^
Run Code Online (Sandbox Code Playgroud)