我在 Shell 中有以下脚本:
read n
for ((i=1;i<=$n;i++))
do
echo "Connecting to $publicip"
ssh -i ./key.txt root@$publicip 'hostnamectl set-hostname autotest$i.domain.com && mv /etc/letsencrypt/live/autotest.domain.com /etc/letsencrypt/live/autotest$i.domain.com && reboot'
done
mv 命令利用了上述命令中的变量。但它似乎不起作用。我收到一个错误:mv:无法将“/etc/letsencrypt/live/autotest.domain.com”移动到其自身的子目录“/etc/letsencrypt/live/autotest.domain.com/autotest.domain.com”甚至设置主机名似乎也不起作用(尤其是使用变量时),当我检查另一台服务器以查看主机名是否已更改时。尝试了许多围绕变量的方法,例如添加“”和 {} 等,但都不起作用。
有人能在这方面帮助我吗?
答案1
Shell 变量不会在单引号'
文本中展开。"
对包含 shell 变量的字符串使用双引号。