我是linux新手。我想知道为什么 date 命令不在单引号内扩展。
所以如果我发出如下命令
d=$(date +%m%d)
echo 'A1D$d'
输出是A1D$d
但如果我不加引号它的工作...
d=$(date +%m%d)
echo A1D$d
输出是A1D0603
任何人都可以帮助我吗
我需要日期命令在单引号中展开因为……在aws API命令我需要使用单引号内的日期命令像下面这样
aws s3api list-objects --bucket ui-dl-weather-ecmwf-ltf --prefix daily/ --query "Contents[?contains(Key, 'A1D$(date +%m%d)')]" --output text | awk '{print $2, $4}' >> "$FILESIZE
答案1
这与命令替换无关。该变量$d
在两种情况下具有相同的值。
但单引号可以echo 'A1D$d'
防止$d
被视为变量。你对此无能为力。
但是,如果您有一个很长的单引号字符串并且需要在其之间扩展变量,那么您可以中断引号:
echo 'thismustbequoted'"but here appears a ${variable}, yeah"'andmore singlequotedtext'