Variablen im Set-Hostname- und MV-Befehl im Shell-Skript

Variablen im Set-Hostname- und MV-Befehl im Shell-Skript

Ich habe das folgende Skript in der 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

Der Befehl mv verwendet eine Variable aus den obigen Befehlen. Aber er scheint nicht zu funktionieren. Ich erhalte die Fehlermeldung mv: „/etc/letsencrypt/live/autotest.domain.com“ kann nicht in ein Unterverzeichnis von sich selbst verschoben werden, „/etc/letsencrypt/live/autotest.domain.com/autotest.domain.com“. Sogar das Festlegen des Hostnamens schien nicht zu funktionieren (insbesondere mit Variablen), als ich den anderen Server überprüfte, um zu sehen, ob der Hostname geändert wurde. Habe viele Dinge rund um die Variable ausprobiert, wie das Hinzufügen von „“ und {} usw., aber nichts hat funktioniert.

Kann mir diesbezüglich jemand helfen?

Antwort1

Shellvariablen werden in 'Texten in einfachen Anführungszeichen NICHT erweitert. Verwenden Sie doppelte Anführungszeichen "für Zeichenfolgen mit Shellvariablen.

verwandte Informationen