运行我的bash脚本的这一部分时出现错误
脚本
value=0
for (( t=0; t <= 4; t++ ))
do
d1=${filedates[$t]}
d2=${filedates[$t+1]}
((diff_sec=d2-d1))
SEC=$diff_sec
compare=$((${SEC}/(60*60*24)))
value=$((value+compare))
done
Run Code Online (Sandbox Code Playgroud)
产量
jad.sh: line 28: ((: 10#2014-01-09: value too great for base (error token is "09")
jad.sh: line 30: /(60*60*24): syntax error: operand expected (error token is "/(60*60*24)")
Run Code Online (Sandbox Code Playgroud)
d1和d2是2014-01-09和2014-01-10中的日期
有解决方案吗?
在一个文本文件test.txt中,我有下一个信息:
sl-gs5 desconnected Wed Oct 10 08:00:01 EDT 2012 1001
Run Code Online (Sandbox Code Playgroud)
我想通过下一个命令行提取事件的小时:
hour=$(grep -n sl-gs5 test.txt | tail -1 | cut -d' ' -f6 | awk -F ":" '{print $1}')
Run Code Online (Sandbox Code Playgroud)
我得到了"08".当我尝试添加1时,
14 echo $((hour+1))
Run Code Online (Sandbox Code Playgroud)
我收到下一条错误消息:
./test2.sh: line 14: 08: value too great for base (error token is "08")
Run Code Online (Sandbox Code Playgroud)
如果Bash中的变量是无类型的,为什么?
我试图以yyyymmdd格式生成一个startDate,这个日期是上个月第三天的第一天.例如,当前月份是七月(07),所以我需要将我的开始日期作为四月(04) - 20150401的第一天.
为了在bash中实现这一点,我使用了以下命令:
StartDate=$(date -d "-3 month -$(($(date +%d)-1)) days" +"%Y%m%d")
Run Code Online (Sandbox Code Playgroud)
但是,这给了我以下错误:
line 93: 09: value too great for base (error token is "09")
Run Code Online (Sandbox Code Playgroud)
我不想更改StartDate变量的格式.对于单个数字月份(1-9),格式应该在yyyymmdd格式的月份数字前面有一个前导零.
有什么东西我错过了吗?
提前致谢!
我正在从文本文件中提取信息,特别是“FEW080”
但是,在运行我的脚本时,这是我收到的错误 Value Too Great for 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
Run Code Online (Sandbox Code Playgroud)