我有两个 linux 系统。我正在测试每个系统上是否存在一个程序。一个系统安装了该程序,另一个系统没有。不知何故,尽管命令在$()每个系统上返回不同的值(如预期的那样,在安装了 nvim 的系统上为 0,在未安装 nvim 的系统上为 1),但每个系统都会以相同的方式评估以下示例。例子:
if [[ $(type nvim &>/dev/null) ]]; then
echo true;
else
echo false;
fi
Run Code Online (Sandbox Code Playgroud)
false在两个系统上回响。
为什么会这样,我该如何解决?
尝试:
if type nvim &>/dev/null
then
echo true
else
echo false
fi
Run Code Online (Sandbox Code Playgroud)
一个if command; then...语句依赖于command返回的退出代码。该[[...]]命令可以根据字符串相等、文件是否存在等各种条件设置退出代码。有关man bash详细信息,请参阅。您在此处不需要任何这些条件并type自行返回一个有用的退出代码。