Ich versuche, den folgenden Befehl zu verwenden:Wie verwendet man Variablen in diesem awk Befehl?
awk '/dev-api2\.company-private/{p=NR} p && NR==p+2 && /^HostName/{
$0="HostName 1.1.1.1"; p=0} 1' ~/.ssh/config > $$.tmp && mv $$.tmp ~/.ssh/config
von this SO question genommen.
Nun möchte Ich mag die folgenden ersetzen:
dev-api2 with $shn
1.1.1.1 with $privateip
Aber jetzt, wenn ich den awk-Befehl ausführen tut es nichts.
Dies sind die Werte der Variablen:
shn=dev-api2
privateip=3.3.3.3
nie um ein Skript in UNIX verwenden doppelte Anführungszeichen Es öffnet sich Ihr ganzes Skript. Die Shell für die Interpretation, die sie fragil macht und ihre Ausgabe von der Umgebung abhängig ist, in der sie ausgeführt wird. Wenn Sie einen Befehl 'cmd' haben, der ein Skript als Argument akzeptiert und eine Shell-Variable darin expandieren soll t scheinen sogar hier so idk zu tun, was du versucht hast passieren zu lassen), dann schreibst du es als 'cmd 'foo' '$ var' 'bar'', nicht' cmd 'foo $ {var} bar" 'Aber das würdest du nie mit einem awk-Skript machen. –