问题描述
我通常使用以下bash脚本以一周中的几天(例如,星期一,星期二,星期三,星期四,星期五,星期六和星期日)重命名文件:
#get date
export LANG=id_ID
export TZ=Asia/Jakarta
DAY=$(date --date='0 days' '+%A')
TODAY=$(date --date='0 days' '+%Y%m%d')
#get each page 1 till 9
PAGE=1
until [ $PAGE -gt 9 ]; do
mv "0$PAGE".jpg banjarmasinpost"$TODAY"-"$DAY"_"0$PAGE".jpg
let PAGE+=1
done
是否可以将日期的所有名称都小写,例如星期一,星期二,星期三,星期四,星期五,星期六和星期天? 谢谢大家。
解决方法
请参见bash
reference manual:
${parameter^pattern}
${parameter^^pattern}
${parameter,pattern}
${parameter,pattern}
大小写修改。此扩展修改了参数中字母字符的大小写。与路径名扩展一样,扩展模式以生成模式。参数扩展值中的每个字符都针对模式进行测试,如果与模式匹配,则将转换其大小写。该模式不应尝试匹配多个字符。
^
运算符 将匹配模式的小写字母转换为大写;,
运算符将匹配的大写字母转换为小写。^^
和,
扩展将转换后的每个字符转换为扩展值;^
和,
扩展名匹配并仅转换扩展值中的第一个字符。如果省略模式,则将其视为匹配每个字符的“?”。 [...]
因此,如果$DAY
包含Wednesday
,则可以编写${DAY,}
以获得wednesday
:
$ DAY=$(date --date='0 days' '+%A')
$ echo $DAY
Wednesday
$ echo ${DAY,}
wednesday
(在这种情况下,您也可以使用${DAY,}
,因为您只需要担心一个字母即可。)
Bash参数扩展可以解救! ${DAY,}
将扩展为$DAY
的小写字母值。
(此外,shell脚本中的变量名称应为小写字母,请参见this unix.stackexchange问题。)