0

我通常使用以下 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

有没有办法将一天的所有名称都变成小写,例如星期一、星期二、星期三、星期四、星期五、星期六和星期日?谢谢大家。

4

2 回答 2

2

请参阅bash 参考手册

${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,},因为您只需要担心一个字母。)

于 2020-09-03T02:41:52.740 回答
1

bash 参数扩展来救援!${DAY,,}将扩展为 的小写值$DAY

(另外,shell 脚本中的变量名应该是小写的——参见这个unix.stackexchange 问题。)

于 2020-09-03T02:41:29.580 回答