2012-03-30 19 views
6

Próbuję przypisać wyjście polecenia wycięcia do zmiennej, jednak mam dziwny problem. Używam powłoki tcsh.Przypisywanie danych wyjściowych polecenia do zmiennej powłoki

$echo $0 
tcsh 

To polecenie używam: (. Więc jest to nie plik byłem w pracy, ale zmniejsza problem do tego)

$set a=`cut -f2 -d' ' test.txt` 
Missing }. //This is the output I am getting 

Teraz plik jest naprawdę proste

Test.txt:

{ {corner 

to wszystko! To jest plik. Jeśli zmienię plik do tego:

{ {corner} 

komunikat działa, ale „a” otrzymuje następujące wartości:

$echo $a 
corner //Please note its not {corner} but corner 

Stąd myślę, że powłoka próbuje wykonać {corner jako polecenie, a od jego brakuje narzekania na klamrę zamykającą. Czy ktoś ma jakiś pomysł, dlaczego pokazuje to zachowanie? Rozumiem, że powinien on po prostu przypisać wyjście cut do zmiennej, ale wygląda na to, że przypisuje to rekurencyjnie! Newbie

Odpowiedz

5

Trzeba owinąć go wokół cudzysłowach

set a="`cut -f2 -d' ' test.txt`" 

samo odnosi się do zastosowań takich jak echo

echo "$a" 

Output

{corner 
+0

To nie będzie działać jako PO zamierza to zrobić. To po prostu przypisze "Brakujące" do a. – Ketan

+0

Nie działa to! spróbuj echo "$ a", a nie echo $ a. Ale jestem zdezorientowany, dlaczego musimy to zrobić? – Richeek

+0

Moja zła. Brakowało podwójnych cudzysłowów podczas powtarzania $ a. – Ketan

Powiązane problemy