我正在尝试创建一个文件夹结构来测试备份脚本。文件夹是基于日期的,并且将具有文件夹名称的修改日期。
为此,我创建了一个日期列表并对其进行迭代,创建了目录并将修改时间设置为该日期。
#!/bin/bash
dates="2024-01-01 2024-01-02" # + many more.
for d in $dates ; do
mkdir "/mnt/2024/Backups/${d}" 2>/dev/null
t="${d//-/}0000"
touch -a -m -t "${t}" "/mnt/2024/Backups/${d}"
done
如果我运行这个脚本,我会得到:(
go.sh: 6: Bad substitution
在我的脚本中是这一行t="${d//-/}0000"
)
令人困惑的是,如果我在 bash (ubuntu) 上进行测试
$ d=2024-01-01
$ t=${d//-/}
$ echo $t
20240101
它的行为符合预期。有人能解释一下发生了什么,或者如何解决它吗?
可重复:
解决方案:使用 bash 运行 bash 脚本。