在一个文本文件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中的变量是无类型的,为什么?
cho*_*oba 85
参见算术求于man bash:
前导0的常量被解释为八进制数.
您可以通过参数扩展删除前导零:
hour=${hour#0}
Run Code Online (Sandbox Code Playgroud)
或强制基础-10解释:
$((10#$hour + 1))
Run Code Online (Sandbox Code Playgroud)
she*_*ter 13
我称之为黑客,但鉴于你只处理小时值,你可以做到
hour=08
echo $(( ${hour#0} +1 ))
9
hour=10
echo $(( ${hour#0} +1))
11
Run Code Online (Sandbox Code Playgroud)
风险很小.
IHTH.
你也可以用 bc
hour=8
result=$(echo "$hour + 1" | bc)
echo $result
9
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
113065 次 |
| 最近记录: |