Wie zum verketten von strings zusammen in csh?
Möchte ich zum verketten von strings zusammen, um ein Kommando-string in eine csh-Skript,Datei1.csh. Allerdings csh hält Klagen von Fehlern für commandString variable und ich weiß wirklich nicht, was ich falsch gemacht habe. Hier ein Teil des codes.
set var1 = "Hat"
set var2 = 100
set embeddedString = 's/'$var1' =.*$/'$var1' = '$var2'/g'
set commandString = "sed -i ' "$embeddedString" ' productPrice.txt"
echo $commandString
Mein Ziel ist es, commandString vairable etwas wie
sed -i 's/Hat =.*$ /Hat = 100/g' productPrice.txt
Dann, diese commandString eingefügt werden in eine andere Skript-Datei,Datei2.csh. Datei2.csh ist die eigentliche Skript-Datei, die führt die substitution Befehl für Hat der Preis. Darüber hinaus werden die Werte von var1 und var2 sind Lesen aus einem priceUpdateList.txt Datei, so dass Sie nicht mit festen Werten. Mit anderen Worten, ich kann nicht einfach geben Sie Hut und 100 in der commandString variable. Weiß jemand, wie man Zitate korrekt zu generieren, die Kommando-string in der csh ?
Danke Ihnen so sehr,
cmdStr = "sed -i \' ...
. Tatsächlich laufen die $cmdStr, die Sie gehen zu müssen, um eval
Recht? Viel Glück.Auch, drehen auf der shell Debuggen (hm... csh...
set -vx
genau wie alle anderen Schalen?). Dann kann man eine Vorstellung davon, wie die Variablen interpretiert werden. Viel Glück.Danke so sehr viel. Bevor ich Sie will mich umbringen, es hat funktioniert.:) Ich fand heraus, dass ich erfolgreich in den commandString, aber ich konnte nicht echo. Solange jedoch csh können die Variablen, bin ich zufrieden.
kann ich diesen post als Antwort, dass Sie akzeptieren? In jedem Fall froh, dass es geholfen hat
Ja.Tun Sie dies bitte.Es tut mir Leid, ich bin nicht sicher, wie Sie Sie ändern, um es zu sein, eine Antwort, die ich angenommen habe. Wenn Sie wissen, wie zu tun, bitte gehen Sie voran und tun. Vielen Dank,
InformationsquelleAutor Cassie | 2011-11-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie zu zitieren (zumindest 1x) die embedded single-quotes (also
cmdStr = "sed -i \' ....
tatsächlich laufen die $cmdStr, die Sie gehen zu müssen, umeval
Recht?Zu verwenden, shell Debuggen in csh (was ich empfehlen würde, um zu sehen, was passiert), ändern Sie die erste Zeile in dein script
Dies wird Ihnen zeigen, jeder Zeile oder einen block von code, wie es ausgeführt wird, und dann die gleiche code-block, der mit der Umgebungsvariablen erweitert.
InformationsquelleAutor shellter
wie etwa:
set embeddedString="s,$var1 =.*,$var1 = $var2,g"
set commandString="sed-i '$embeddedString' productPrice.txt"
können Sie /anstelle von , in embeddedString, wenn Sie wollen 🙂
ich danke Ihnen sehr für Ihre Hilfe zu.
InformationsquelleAutor Jay
Sorry, ich vergaß zu erklären, die Keine Übereinstimmung zitiert von Cassie
Der Unterschied zwischen
sowie
enter code here
echo "$commandString"ist, dass die ersten Echos das Ergebnis der korrekt eingebauten Befehl (No match natürlich-da braucht es zum Lesen einer Datei fehlt", benannt productPrice.txt , während die zweite, die Einbettung der Befehl in doppelten Anführungszeichen ist, zeigt der Befehl selbst, das ist, was gefragt wurde.
InformationsquelleAutor
Überaus einfach:
Ihr Ziel ist es
commandString
variable, die es zu etwas wieDen unten tut es, und druckt
commandString
für den Vergleich mit Ihren Ziel...Zusätzlich alle Angebote sind nutzlos, sparen diejenigen, die begrenzen Ihre "Finale" - strings.
Aber meistens, bitte beachten Sie das fehlende Leerzeichen zwischen
.*$ and /$var1
. Genug zum Narren zu halten, den interpreter sah eine Zeichenfolge mit dem Namen $/, während string-Namen sollten mit einem Buchstaben beginnen.InformationsquelleAutor