变量的错误替换错误

时间:2017-12-13 09:13:25

标签: linux bash shell debian

我正在尝试编写一个对某些文件进行排序的脚本,我让它在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

1 个答案:

答案 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脚本语法的绝佳工具。在给你的脚本提供信息时说:

  

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