Lesen Sie die Benutzereingabe mit Leerzeichen in der csh-Shell-Skript
Ich habe ein Skript, wo der Benutzer sollte in der Lage sein, zu geben Sie eine Zeichenfolge mit Leerzeichen. Bisher habe ich:
#bin/csh
echo "TEST 1"
echo -n "Input : "
set TEST = $<
echo "Var | " $TEST
set TEST=`echo $TEST`
echo "Var after echo | " $TEST
set TEST=`echo $TEST | sed 's//_/g'`
echo "Var after change | " $TEST
Wenn ich geben Sie die Zeichenfolge "r r r" bei "Eingabe", "$TEST " würde nur "r". Ich möchte in der Lage sein, $TEST, "r r r". Ist das möglich?
Wenn ich einen string wie "1 1 1" bekomme ich eine Fehlermeldung:
set: Variable name muss mit a anfangen
Brief.
Was ist der Grund dafür?
Kann ich Punkt Sie zu faqs.org/faqs/unix-faq/shell/csh-whynot ? Es wird nicht Ihr problem lösen, aber es zeigt verschiedene Gründe, warum csh ist nicht die beste shell für die Programmierung 🙂
Ja. Normalerweise verwende ich den sh. In diesem Fall brauche ich zum navigieren in ein anderes Verzeichnis und immer noch da sein, wenn das script vorhanden ist. Ich mache das mit Quelle (alias aenew 'source ~/scripts/aenewc'). Also, wenn der Benutzer arbeitet in einer c-shell, die das Skript müsste auch in der "csh". Das ist der Grund, warum ich Griff zu csh in diesem Fall.
Ja. Normalerweise verwende ich den sh. In diesem Fall brauche ich zum navigieren in ein anderes Verzeichnis und immer noch da sein, wenn das script vorhanden ist. Ich mache das mit Quelle (alias aenew 'source ~/scripts/aenewc'). Also, wenn der Benutzer arbeitet in einer c-shell, die das Skript müsste auch in der "csh". Das ist der Grund, warum ich Griff zu csh in diesem Fall.
Ja. Normalerweise verwende ich den sh. In diesem Fall brauche ich zum navigieren in ein anderes Verzeichnis und immer noch da sein, wenn das script vorhanden ist. Ich mache das mit Quelle (alias aenew 'source ~/scripts/aenewc'). Also, wenn der Benutzer arbeitet in einer c-shell, die das Skript müsste auch in der "csh". Das ist der Grund, warum ich Griff zu csh in diesem Fall.
Ja. Normalerweise verwende ich den sh. In diesem Fall brauche ich zum navigieren in ein anderes Verzeichnis und immer noch da sein, wenn das script vorhanden ist. Ich mache das mit Quelle (alias aenew 'source ~/scripts/aenewc'). Also, wenn der Benutzer arbeitet in einer c-shell, die das Skript müsste auch in der "csh". Das ist der Grund, warum ich Griff zu csh in diesem Fall.
InformationsquelleAutor Gayan | 2009-04-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist, weil Sie sind nicht mit Anführungszeichen in Ihrem
SET
- Anweisung. Wenn Sie geben Sie"r r r"
als Ihr Eingang, der zwei verschiedenen Varianten (ohne Anführungszeichen und zitiert) sind äquivalent zu:Den ersten von denen, die einfach setzt
TEST
zu"r"
undr
zu""
(zweimal!). Die zweite legtTEST
zu"r r r"
. Das ist, weilcsh
können Sie so mehrere Aufgaben wie:So müssen Sie die zitierte Variante des
SET
. Untersuchen Sie die folgenden Transkript zu sehen, wie es funktioniert:Der Grund, warum man immer die Fehlermeldung, die Sie beschreiben, mit Eingabe von
"1 1 1"
ist, weil Sie tatsächlich ausführen:sowie
csh
ist die Einnahme dieses, um zu bedeuten, dass Sie wollen, um die variable zu erstellenTEST
eingestellt"1"
gefolgt von der variable1
, die nicht mit einem Buchstaben beginnen, also nicht erlaubt. Mit dem zitierten Variante wird dies:wird das tun, was Sie erwarten.
InformationsquelleAutor paxdiablo