值对于 Base 来说太大(错误标记为"080"



我正在从一个文本文件中提取信息,特别是"FEW080">

然而,当运行我的脚本时,这是一个错误,我收到的值对于Base来说太大(错误标记为"080"(;由于有一个前导零,我假设它是八进制的,但我想抑制任何前导零

fewClouds=$( egrep -o 'sFEW[0-9]{3}s' metar.txt | cut -c5-7 ) 
if [ -n "$fewClouds" ]; then
fewClouds=$(($( egrep -o 'sFEW[0-9]{3}s' metar.txt | cut -c5-7) *100))
printf "nFew Clouds at %s feet" $fewClouds
fi

在bash中,您可以在算术展开中指定基。

此外,由于您已经在使用grep -o,那么您应该使用grep -oP,同时考虑后面和前面:

#!/bin/bash
if fewClouds=$(grep -oP '(?<=sFEW)[0-9]{3}(?=s)' metar.txt)
then
fewClouds=$(( 10#$fewClouds * 100 ))
printf "nFew Clouds at %s feet" "$fewClouds"
fi

相关内容

  • 没有找到相关文章

最新更新