我制作了这个脚本 exif_script 并希望将 ep 变量更改为两位数,例如 01 而不是 1。
#!/bin/bash
x=0
ep=1
while [ $x -le 11 ]
do
echo "Welcome $x times"
date --date="$x week" +"%Y:%m:%d"
exiftool -exififd:dateTimeOriginal="$(date --date="$x week" +"%Y:%m:%d") 00" $1$ep*
x=$(( $x + 1 ))
ep=$(( $ep + 1 ))
done
Run Code Online (Sandbox Code Playgroud)
您可以使用shell 参数扩展向数字添加零填充。
例如,要以 5 位数字格式打印号码:
$ zeroos="00000"
$ number="123"
$ temp_num="$zeroos$number"
$ echo "${temp_num:(-5)}"
00123
# Or instead of the "5" constant, use $zeroos length
$ echo "${temp_num:(-${#zeroos})}"
00123
Run Code Online (Sandbox Code Playgroud)
更新:
$number当数字变得比 更长(位数更多)时,上面的示例会截断 的最前面的数字$zeroos:
$ number="1234567" # Changed to 7 digits
echo "${temp_num:(-5)}"
34567 # Resulted in a wrong number!
Run Code Online (Sandbox Code Playgroud)
更安全的方法:
$ number="123"
$ echo "${zeroos:${#number}:${#zeroos}}${number}"
00123
$ number="1234567"
$ echo "${zeroos:${#number}:${#zeroos}}${number}"
1234567
Run Code Online (Sandbox Code Playgroud)
注1:
略有不同的变体,分别使用第一个数字$zeroos。$century(而不是最后一个)将是:
$ century="2000"
$ year="1"
$ echo "${century:0:-${#year}}${year}"
2001
Run Code Online (Sandbox Code Playgroud)
例如,如果您有 1 位、2 位甚至 4 位年份的混合日期,但希望它们在任何情况下都是 4 位数字,而不需要条件(用于检查其实际数字)和任何算术。
缺点是,如果${#year}大于${#century},则会导致错误。
笔记2:
当使用printf(如其他答案所建议的那样)时,请注意,它在大规模上可能会变慢(参见示例)。