我正在尝试编写一个对某些文件进行分类的脚本,然后我在外壳中手动工作(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.sh
,bash filesorter.sh
和sh 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 ...)"
)。