【发布时间】:2020-09-09 08:46:31
【问题描述】:
环境:
Mac OS Catalina 10.15
GNU bash,版本 3.2.57(1)-release (x86_64-apple-darwin19)
问题:
我有一个 bash 脚本。
我尝试测试是否安装了 MacPOrt。
当我运行命令“port -v”时,它会打开 Macport 终端,而我的脚本的其余部分已损坏。
所以我尝试使用命令“哪个端口”的另一种方法。 它给出了输出“未找到端口”,但我没有成功将它存储在变量中。我的变量是空的。
您可以在下面看到我的 bash 脚本执行 2 个命令的源代码:
- 第一个给出一个空值。
- 如果没有安装 Macport,第二个会给出一个值。但如果安装了它,它会打开 Macport 终端并破坏我的代码。
OUTPUT=$(which port 2>&1)
echo "OUTPUT is $OUTPUT"
if echo "$OUTPUT" | grep -q "port not found"; then
echo "MacPort is NOT installed"
else
echo "MacPort is installed"
fi
echo "======================================================================"
OUTPUT=$(port -v 2>&1)
echo "OUTPUT is $OUTPUT"
if echo "$OUTPUT" | grep -q "command not found"; then
echo "MacPort is NOT installed"
else
echo "MacPort is installed"
fi
这是输出:
OUTPUT is
MacPort is installed
======================================================================
OUTPUT is test.sh: line 11: port: command not found
MacPort is NOT installed
所以看起来“哪个”命令的行为不像其他命令。如何存储“哪个”命令的输出? 如果不可能,我同意接受任何其他测试 Macport 安装的技巧。
【问题讨论】:
-
无法重现(尽管此处不在 MacOS 上)。
OUTPUT=$(which port 2>&1)后跟echo $OUTPUT给了我which: no port in ($PATH)。注意“没有端口”,而不是“找不到端口”。无论如何,OUTPUT对我来说不是空的。