You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 09:09:37