如果离子的版本是3.4.0,我试图在bash中构建一个简单的if开关:
mles:operations-ionic mles$ node_modules/ionic/bin/ionic -v
3.4.0
mles:operations-ionic mles$ if [[ "$(node_modules/ionic/bin/ionic -v)" = "3.4.0" ]]; then echo "Ionic3 Project"; fi
mles:operations-ionic mles$
这应该输出Ionic3 Project
到控制台,但它没有。为什么呢?
@Inian:我正在写信给stdout。一个简单的比较会写入控制台:
mles:operations-ionic mles$ if [[ "1" = "1" ]]; then echo "Ionic3 Project"; fi
Ionic3 Project
mles:operations-ionic mles$
并且将版本存储到变量的技巧没有做任何事情:
mles:operations-ionic mles$ version=$(node_modules/ionic/bin/ionic -v); if [[ "${version}" = "3.4.0" ]]; then echo "Ionic3 Project"; fi
mles:operations-ionic mles$
@camh没有隐形字符。将其保存到脚本中:
version=$(node_modules/ionic/bin/ionic -v)
if [[ ${version} == "3.4.0" ]]; then
echo "Ionic3 Project";
fi
printf '<%s>' "${version}"
输出:
mles:operations-ionic mles$ ./jenkins.sh
3.4.0>mles:operations-ionic mles$
答案 0 :(得分:1)
看起来离子开发人员使用隐藏字符搞砸了版本号。如果将命令传递给显示不可打印字符的cat -A
,您将意识到其前面确实存在隐藏字符:
ionic --version | cat -A
^[[2K^[[G3.4.0$
(最后的$
只是换行符)
实际上我认为这应该固定在离子方面。我filed a bug。
您可以使用的解决方法是:
version="$(ionic info | awk '/Ionic CLI/{print $NF}')"
<强>更新强>
问题已在https://github.com/ionic-team/ionic-cli/commit/cb448dbe535ab77d5feb07090de962e17290e557中修复。它应该在下一个版本中消失(在3.4.0之后)。