我正在从一个文本文件中提取信息,特别是"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