不当工作,所以我发现了艰辛的道路是$(date +%H)
从凌晨1点返回基地8号上午9点。没有什么大不了的,我强迫它成为一个基数为10的数字:$((10#$(date +%H)))
......这是我的问题,写的完全是抛出一个错误“-bash:9:command not found”,但如果我说echo $((10#$(date +%H)))
它会返回我正确的数字。任何线索为什么发生这种情况?你将如何去修复它?谢谢强制基地10在BASH
1
A
回答
3
如果您的date
变化是相当新的,有一个格式修饰符,可以为每man
页面更改或禁用填充:
默认情况下,date
垫用零数字字段。以下可选的标志可以遵循%
:
-
(连字符)不要垫场。_
(下划线)填充空格。0
(零)垫用零。
因此,第一件事我会尝试将date -%-H
。这应该给你没有任何填充的小时。
((hr = 1$(date +%H) - 100))
的1$(date +%H)
会给你一个:
上关的机会,你有一个古老的date
变种,你可以像得到一个实际数(取决于时间单或双位数)值在100
和123
(含)之间,然后减去100
以给出数字小时。
例如,在上午04点23分,这将采取04
从date +%H
,把它转换成104
然后减去100
获得数4
。比9
更大
号码也可以工作。时间16:42将采取16
从date +%H
,把它转换成116
然后减去100
获得数16
。
至于为何您会得到一个错误,命令$((10#$(date +%H)))
将评估为9
(假设时间为09:xx
),然后就尝试执行(其中,除非你在你有一个可执行9
某处路径,会出错)。
用echo
作为前缀将导致命令echo 9
运行,其中是有效。
正如你所看到的,你不需要呼应它,你可以将其存储在一个变量(如hr
以上),以备后用。
相关问题
- 1. 平等基地10和基地16
- 2. C:在基地打印的BigInteger 10
- 3. 在地图上强制执行仿制
- 4. 如何强制bash解释器?
- 5. bash:强制函数来调用别名
- 6. ValueError:无效文字int()与基地10
- 7. 最好的办法基地10
- 8. 强制程序员调用其基地中的方法
- 9. VHDL输入强制接地
- 10. Bash(价值太大了基地)
- 11. 为什么https在本地被强制?
- 12. 传递命令的部分在bash各地强劲
- 13. 将基数10转换为二进制
- 14. 在iOS 10中为tableviewcell编写registerWithClass或registerWithNib是否强制?
- 15. 批量强制窗口计算器关闭在Windows 10
- 16. RegularExpressionValidator.ValidationExpression强制长度在10个或12个符号
- 17. 强制Tkinter窗口留在全屏幕之上 - Windows 10
- 18. PEP8 - 基地2至10个基本转换器
- 19. 在C++中执行shell命令时强制执行环境bash
- 20. 强制bash在vi模式下使用.vimrc
- 21. bash命令强制在USB驱动器上关闭文件
- 22. 在bash中,我怎么能强制打印到终端
- 23. PS1 bash命令替换10
- 24. Jenkins在Windows 10上使用Bash
- 25. Windows 10在Bash中打开目录Ubuntu
- 26. 强制IDE - 基本编译问题
- 27. 强制重写方法基类
- 28. 无效文字为int()与基地10:''为地图(int,str(num))
- 29. Windows 10本地bash确实响应VSCode中的tasks.json
- 30. 基地名称与空格在bash脚本中?
你能解释脚本内实际发生了什么吗? – ConfuzzledandPuzzled
@ConfuzzledandPuzzled,希望这个更新可以让你不再感到困惑和/或困惑:-) – paxdiablo
非常感谢,但是你知道为什么在我的问题中排除脚本中的echo会引发错误,而添加它会让它正常运行吗? – ConfuzzledandPuzzled