我正在尝试编写一个对某些文件进行排序的脚本,我让它在shell中手动工作(Debian,似乎是破折号),但是当我运行与脚本相同的代码时,我得到“错误替换”从第2和第3行;
pagespeed FetchHttps enable,allow_self_signed;
我在SO上找到的所有东西似乎都与不同的贝壳有关,所以我尝试了pagespeed SslCertDirectory /etc/ssl/certs;
pagespeed SslCertFile /etc/ssl/certs/domain.com.crt;
以及#!/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
答案 0 :(得分:3)
将花括号更改为括号。
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 ...)"
)。