シェル スクリプトの set-hostname および mv コマンドの変数

シェル スクリプトの set-hostname および mv コマンドの変数

シェルに以下のスクリプトがあります:

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

'シェル変数は、一重引用符で囲まれたテキストでは展開されません。"シェル変数を含む文字列には二重引用符を使用してください。

関連情報