我在我的bash脚本中有两个软件版本检查,但是它们的工作方式并不像我预期的那样。
DRUSH_VERSION="$(drush --version)"
echo ${DRUSH_VERSION}
if [[ "$DRUSH_VERSION" == "Drush Version"* ]]; then
echo "Drush is installed"
else
echo "Drush is NOT installed"
fi
GIT_VERSION="$(git --version)"
echo ${GIT_VERSION}
if [[ "GIT_VERSION" == "git version"* ]]; then
echo "Git is installed"
else
echo "Git is NOT installed"
fi
响应:
Drush Version : 6.3.0
Drush is NOT installed
git version 1.8.5.2 (Apple Git-48)
Git is NOT installed
同时,如果我将
DRUSH_VERSION="${drush --version)"
更改为
DRUSH_VERSION="Drush版本:6.3.0"
它会回复
Drush已安装
现在我将使用
if type -p drush;
但我仍然想获取版本号。
if
中的"GIT_VERSION"
应该改为"$GIT_VERSION"
。通过这个修复,我成功地进行了检查。我没有安装 "drush"。尝试使用echo "${DRUSH_VERSION}"
(带引号)来查看是否存在奇怪的空格。 - Nemoecho
,这可能会让你困惑。 - Nemoecho
吗?如果它打印到 stderr,你无论如何都会看到输出,但你的echo
只会产生一个空行。不管怎样,如果这个猜想是正确的,修复很容易;只需添加一个2>&1
重定向。 - tripleeeecho
没有生成代码,输出中将会有一行空白,因为echo $DRUSH_VERSION
意味着打印一个换行符。 - chepner