2011-10-12 133 views

答えて

5

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

しかしcshのは、あなたがやっているものは何でも仕事のための適切なツールであるかどうかを検討してください。

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

+0

ありがとう。 qはどういう意味ですか? – zzhang

+0

変数を引用符で囲みます。 '$ s:q'は' '$ s''に似ています。この例では必要ではありませんが、他の場合(たとえば、データの空白がある場所など)にある可能性があります。 –

7

発表現在のものよりも単純な解決策を使用することを伴います組み込みの置換修飾子 - この例では、ループまたは外部コマンド置換を無駄に使用する必要はありません。

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

echo $split[2] # returns two 

()は、リストを作成します。sは置換修飾子で、:は、必要な回数だけサブコマンドを繰り返します。

さらに、t/cshでは、裸の文字列や強制評価を必要としない変数の引用は不要です。

1
set list = one,two,three 
foreach i ($list:as/,/ /) 
    echo $i 
end 
関連する問題