Ich versuche, die Ausgabe von cURL einer Variablen wie folgt zuzuweisen:
#!/bin/sh
$IP=`curl automation.whatismyip.com/n09230945.asp`
echo $IP
sed s/IP/$IP/ nsupdate.txt | nsupdate
Wenn ich das Skript ausführe, geschieht jedoch Folgendes:
./update.sh: 3: =[my ip address]: not found
Wie kann ich die Ausgabe $IP
richtig machen?
Antworten:
In der Shell setzen Sie kein $ vor eine Variable, die Sie zuweisen. Sie verwenden $ IP nur, wenn Sie sich auf die Variable beziehen.
quelle
curl
? Hinzufügen-silent
Blätter$IP
leer ...curl
sendet seine verrauschte Ausgabe an stderr, daher sollte der Fortschrittsbalken bei einem solchen Skript ignoriert werden. Trotzdem--silent
oder-s
funktioniert gut. Wenn Sie Probleme haben, stellen Sie bitte eine Frage .curl -s
diese Option, um den Fortschrittsbalken und die Fehlermeldungen zu deaktivieren.stderr
:IP=$(curl <url> 2>/dev/null)
Gleiches gilt für etwas Komplexeres ... das Abrufen der ec2-Instanzregion aus der Instanz heraus.
quelle
$
durchos.system
ersetze, hat INSTANCE_REGION nicht den Wert der Ausgabe.