Linux shell上变量扩展的问题

Linux shell上变量扩展的问题,shell,sh,Shell,Sh,在下一个脚本中扩展变量时出现问题: fecha="$(date +'%d.%m.%Y')" bkfile=$bkpath"backup_"$fecha".tar.gz" tempfile="/tmp/Backup_"$fecha".tar.gz" declare -a commandlist=( 'tar -pczf $tempfile /tmp/MyBackup/*' 'mv $tempfile $bkfile' ) for command in "${commandlist[@]}" do

在下一个脚本中扩展变量时出现问题:

fecha="$(date +'%d.%m.%Y')"
bkfile=$bkpath"backup_"$fecha".tar.gz"
tempfile="/tmp/Backup_"$fecha".tar.gz"
declare -a commandlist=(
'tar -pczf $tempfile /tmp/MyBackup/*'
'mv $tempfile $bkfile'
)
for command in "${commandlist[@]}"
do 
    echo $command
done
它向我展示了:

tar -pczf $tempfile /tmp/MyBackup/*
mv $tempfile $bkfile
我需要把变量展开


有人能帮我解决这个问题吗?

将单引号改为双引号

'tar -pczf $tempfile /tmp/MyBackup/*'
'mv $tempfile $bkfile'


如果尝试将其作为命令运行,则通配符仍然不会展开。幸运的是,
tar
可以简单地接受
/tmp/MyBackup
作为参数。(但也请参见。)
"tar -pczf $tempfile /tmp/MyBackup/*"
"mv $tempfile $bkfile"