我真的不明白我错过了什么。我有一个非常基本的脚本,需要检查文本是否只包含数字(更具体的是应用程序的语义版本),然后做一些事情。
text.txt是这样的:appVersion: 2.0.1
这是我的剧本
#!/bin/bash
appVersion=`cat test.txt | awk '/^appVersion:/{print $2}'`
echo "appVersion is " $appVersion
Version=3.1.5
if [[ $appVersion =~ [0-9]+(\.[0-9]+){2,3}$ ]] ; then
echo "is a number" $appVersion
else
echo "not a number" $appVersion
fi`
基本上,我从文本中cat
我需要什么,然后尝试在if条件中传递该信息。
问题是脚本基本上不是每次运行时都接受变量appVersion
,它一直说我的变量中没有任何数字,比如不匹配正则表达式,但如果我传递变量$Version
,脚本就可以工作。
顺便说一下,echo "appVersion is"$appVersion正在工作(它正在打印我在appVersion中运行的内容),因此我的变量$appVersion中的命令实际上正在检索我需要的内容。
我想我在awk上漏掉了一些东西,但我不明白是什么。
编辑:
作为测试,我在我的本地pc上运行这个脚本,在wsl2ubuntu20上,然后让它在linux azure devops代理上运行
1条答案
按热度按时间cuxqih211#
我建议更换
与
或使用GNU
awk
来转换Windows的回车。
参见:8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR