我已经搜索了几个答案,但这些答案无法应用于我的问题。
问题代码如下。
我认为dart -version
的结果不是一个简单的字符串。
DART_VER=$(dart --version)
#expect output as ==>> Dart VM version: ...
echo "${DART_VER}"
if [[ "$DART_VER" == Dart* ]]
then
echo Dart! # doesn't enter here
fi
答案 0 :(得分:3)
我认为dart --version
正在写出标准错误而不是标准输出。 (请参阅https://code.google.com/p/dart/codesearch#dart/trunk/dart/runtime/bin/main.cc&sq=package:dart&q=ProcessVersionOption&l=588。)因此,当您看到脚本打印Dart VM version: ...
时,它实际上来自DART_VER=$(dart --version)
(将Dart VM version: ...
打印为标准错误,并设置DART_VER
}到空字符串)而不是echo "${DART_VER}"
(只打印空字符串,加上换行符)。
你可以通过改变它来解决这个问题:
DART_VER=$(dart --version)
到此:
DART_VER=$(dart --version 2>&1)
将标准错误合并到标准输出中以进行捕获。