Sri*_*ram 2 bash scripting wget command-line-arguments
我有一个bash脚本,它将日期,月份和年份作为单独的参数.使用它,构建一个url,然后用于wget
获取内容并将其存储在html文件中(比如t.html).现在,用户可以输入2位数的月/日(如02中而不是2,反之亦然).如何区分上述两种格式并在脚本中对此进行更正?
网址的工作方式如下:
日期:需要输入2位数字.因此,必须提供一个7作为正确构建的URL的07.在这里,我正在寻找一个检查,如果它小于10并且前面没有零,则将日期附加零.因此,在构造url之前,7应该成为日期字段的07.
月份:需要输入2位数字,但是这里的网址会自动在0 <10的情况下附加0.因此,如果用户输入2,则网址形成02,但如果用户输入02,则网址形成002.这里,可能需要附加或删除0.
PS:我知道这个方法后跟url s*c&s,但我只需要使用它.
谢谢,
Sriram
有点不清楚你要求的是什么.如果您只想剥离一个前导零,那么这将做:
month=${month#0}
Run Code Online (Sandbox Code Playgroud)
这将02
变成2
,并且12
仍然存在12
.
如果你需要移除多个零(上面002
会变成02
),你需要做一些不同的事情,比如使用正则表达式
while [ -z "${month##0*}" ]; do month=${month#0}; done
Run Code Online (Sandbox Code Playgroud)
或者使用正则表达式,比如 sed
month=$(sed -e 's/^0*//'<<<"$month")
Run Code Online (Sandbox Code Playgroud)
HTH
编辑
根据您的编辑; 正如已经建议的那样,使用printf
month=$(printf %02d "$month")
Run Code Online (Sandbox Code Playgroud)
这将2
变成02
,12
仍然如此123
.如果你想强制一个两位数字或你没有printf
(这是一个内置在bash中的shell,通常也可以使用,所以机会很低),sed
可以再次帮助
month=$(sed -e 's/.*\(..\)$/\1/'<<<"00$month")
Run Code Online (Sandbox Code Playgroud)
它将前置两个零(002
)并保留最后两个字符(02
),同时将空字符串转换00
为.这也将a
变成0a
.想想看,你不需要sed
这个
month="00$month"
month="${month:0-2}"
Run Code Online (Sandbox Code Playgroud)
(0-
需要消除默认值扩展的歧义)