【发布时间】:2016-06-01 21:00:06
【问题描述】:
我正在尝试编写一个 bash 脚本,而这样做却被困在这里:
我不明白为什么会这样:
MSG=$(pwd)
echo $MSG
输出:
/home/harsh/source/git/trunk
但事实并非如此:
MSG=$(java -version)
echo $MSG
输出:
空白
请帮忙!
【问题讨论】:
-
java -version从命令行运行时显示什么?添加MSG=$(java -version 2>&1)并重试。它可能出于某种原因将信息输出到stderr。 (一些发行版将该信息输出到stdout,其他输出到stderr。)例如opensuse 13.1 使用stdout,Archlinux 使用stderr。 (可能较新的版本使用stderr) -
在stderr中一定有什么东西打印出来说
java not found。 -
虽然这些答案应该是正确的,但另一方面,您应该真正使用
echo "$MSG"(即引用)来打印它并在其他情况下使用它。 -
是的,大卫,添加 2>&1 有效!
标签: linux bash variables ubuntu variable-assignment