Bash脚本字符串替换报错‘bad substitution’的原因分析与解决求助
Bash脚本字符串替换报错‘bad substitution’的原因分析与解决求助
嘿,我最近在写一个用来测试备份脚本的bash脚本,目的是创建一批按日期命名的文件夹,并且把文件夹的修改时间设置成文件夹名称对应的日期。
我的思路是先定义一个日期列表,然后循环遍历每个日期,创建目录后用touch命令修改它的时间戳。脚本代码如下:
#!/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"这一行)
但奇怪的是,我直接在Ubuntu的bash终端里单独测试这段字符串替换逻辑,却是正常工作的:
$ d=2024-01-01 $ t=${d//-/} $ echo $t 20240101
有没有大佬能帮我解释下这到底是怎么回事?或者告诉我该怎么修复这个问题呀?
备注:内容来源于stack exchange,提问作者pgee70
相关产品推荐
相关产品推荐

