变量的不良替代错误



我正在尝试编写一个对某些文件进行分类的脚本,然后我在外壳中手动工作(debian,似乎是破折号),但是当我运行与相同的代码与相同的代码时我从第2行和第3行获得"不良替代"的脚本;

#!/bin/bash
LAST_MONTH="${date +'%Y%m' -d 'last month'}"
LAST_MONTH_HYPHEN="${date +'%Y-%m' -d 'last month'}"

我发现的所有内容似乎都与不同的外壳有关,因此我尝试了#!/bin/sh以及#!/bin/bash。我还尝试以./filesorter.shbash filesorter.shsh filesorter.sh运行脚本,每个置换都为我提供了相同的"不良替代"主题的一些变化

filesorter.sh: line 2: ${date +'%Y%m' -d 'last month'}: bad substitution
filesorter.sh: line 3: ${date +'%Y-%m' -d 'last month'}: bad substitution

将卷曲括号更改为括号。

LAST_MONTH="$(date +'%Y%m' -d 'last month')"
LAST_MONTH_HYPHEN="$(date +'%Y-%m' -d 'last month')"

卷曲支架用于可变替换,如${var}所示,相当于$var。括号用于命令替换,如$(command arg1 arg2)

ShellCheck是检查Shell脚本的语法的绝佳工具。喂您的脚本时,它说:

SC2154:date被引用但未分配(对于命令的输出,使用"$(date ...)")。

最新更新