2011-10-12 17 views

risposta

5

Ad esempio:

set s = "one,two,three" 
set words = `echo $s:q | sed 's/,/ /g'` 
foreach word ($words:q) 
    echo $word:q 
end 

Ma considerare se csh è lo strumento giusto per qualsiasi lavoro che stai facendo:

http://www.bmsc.washington.edu/people/merritt/text/cshbad.txt

+0

Grazie. Cosa significa: q significa qui? – zzhang

+0

cita la variabile; '$ s: q' è simile a' "$ s" '. Non è necessario per questo esempio, ma potrebbe essere in altri casi (ad esempio, dove si hanno spazi bianchi nei dati). –

7

Una soluzione più semplice rispetto a quello attuale presentato comporta l'uso del Modificatore di sostituzione incorporato: non vi è alcun motivo o motivo per utilizzare inutilmente un ciclo o una sostituzione di comando esterna in questo caso:

set list = one,two,three 
set split = ($list:as/,/ /) 

echo $split[2] # returns two 

() crea una lista, il: s è il modificatore di sostituzione e: come ripete la sottotitolazione tutte le volte che è necessario.

Inoltre, t/csh non richiede la citazione di stringhe nude, né variabili che non richiedono una valutazione forzata.

1
set list = one,two,three 
foreach i ($list:as/,/ /) 
    echo $i 
end 
Problemi correlati