shell 脚本中 set-hostname 和 mv 命令上的变量

shell 脚本中 set-hostname 和 mv 命令上的变量

我在 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 变量的字符串使用双引号。

相关内容