Bash - 日期字符串 yyyymmdd 的基础值太大(错误标记为“09”)
Bash -value too great for base (error token is "09") for date string yyyymmdd
我正在尝试生成 yyyymmdd 格式的开始日期,以便该日期是上个月的第三天的第一天。例如,当前月份是七月 (07),所以我需要将我的开始日期设置为四月 (04) 的第一天 - 20150401。
为了在 bash 中实现这一点,我使用了以下命令:
StartDate=$(date -d "-3 month -$(($(date +%d)-1)) days" +"%Y%m%d")
但是,这给了我以下错误:
line 93: 09: value too great for base (error token is "09")
我不想更改 StartDate 变量的格式。对于个位数的月份 (1-9),格式应在 yyyymmdd 格式的月份数字前面有一个前导零。
有什么我遗漏的吗?
提前致谢!
bash 看到 09
并试图将其视为失败的八进制数。
您可以在日期值前加上 10#
前缀以强制使用基数。请参阅 Shell Arithmetic.
的倒数第二段
StartDate=$(date -d "-3 month -$((10#$(date +%d)-1)) days" +"%Y%m%d")
用 +%e
(space 填充)替换 +%d
(一个月中的零填充日)以避免前导零。
我正在尝试生成 yyyymmdd 格式的开始日期,以便该日期是上个月的第三天的第一天。例如,当前月份是七月 (07),所以我需要将我的开始日期设置为四月 (04) 的第一天 - 20150401。
为了在 bash 中实现这一点,我使用了以下命令:
StartDate=$(date -d "-3 month -$(($(date +%d)-1)) days" +"%Y%m%d")
但是,这给了我以下错误:
line 93: 09: value too great for base (error token is "09")
我不想更改 StartDate 变量的格式。对于个位数的月份 (1-9),格式应在 yyyymmdd 格式的月份数字前面有一个前导零。
有什么我遗漏的吗?
提前致谢!
bash 看到 09
并试图将其视为失败的八进制数。
您可以在日期值前加上 10#
前缀以强制使用基数。请参阅 Shell Arithmetic.
StartDate=$(date -d "-3 month -$((10#$(date +%d)-1)) days" +"%Y%m%d")
用 +%e
(space 填充)替换 +%d
(一个月中的零填充日)以避免前导零。