2016-08-01 8 views
0

Ich versuche, ein einfaches Shell-Skript Beispiel auszuführen:Shell Syntax IFS

STR="qwe;ert;rty;tii" 
IFS=';' read -r NAMES <<< "$STR" 

Dies wird mir die folgende Fehlermeldung geben:

syntax error: got <&, expecting Word 

Ich bin mir nicht ganz sicher, warum dies isn arbeite nicht. Ich dachte, dass die Syntax, die ich verwendete, richtig war und ich versuchte, mit anderen Beispielen zu vergleichen, und ich sah die Syntax war fast identisch. Dies ist MKS bash, nicht GNU bash

würde Jedes Feedback

Dank

+0

nicht Adressierung Ihrer i ssue, aber Sie können die Option '-a' verwenden. – karakfa

+1

Dort * ist * no '<&' ist dein Code. Bitte stellen Sie sicher, dass Ihr Snippet * Ihr Problem tatsächlich reproduziert *, bevor Sie eine Frage stellen. –

+2

... BTW, wir hatten diese ** genaue ** Frage geschrieben und gelöscht, vor ein paar Tagen: http://StackOverflow.com/Questions/38667961/Shell-Script-issue –

Antwort

1

helfen. Es ist nicht wirklich bash und unterstützt nicht die Syntax der echten Shell.

Es gibt vollkommen gute (... naja, einigermaßen angemessene) Builds von GNU bash für Windows. Benutze sie.


Insbesondere in Echt bash, ein Semikolon getrennte Zeichenfolge in ein Array von Namen zu spalten:

str='qwe;ert;rty;tii' 
IFS=';' read -r -a names <<<"$str" 

... die Sie dann überprüfen können, mit

declare -p names 

oder 1-zu-1-Linie mit

printf '%s\n' "${names[@]}" 
Verwandte Themen