2011-10-12 40 views

Trả lời

5

Ví dụ:

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

Nhưng xem xét liệu csh là công cụ phù hợp với bất cứ công việc bạn đang thực hiện:

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

+0

Cảm ơn. Q: nghĩa là gì? – zzhang

+0

Nó trích dẫn biến; '$ s: q' tương tự như' "$ s" '. Nó không cần thiết cho ví dụ này, nhưng nó có thể là trong các trường hợp khác (nói, nơi bạn có khoảng trắng trong dữ liệu). –

7

Một giải pháp đơn giản hơn so với cái hiện tại được trình bày liên quan đến việc sử dụng modifer thay thế tích hợp - không cần hoặc lý do để lãng phí sử dụng vòng lặp hoặc thay thế lệnh bên ngoài trong trường hợp này:

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

echo $split[2] # returns two 

() tạo danh sách, các: s là công cụ sửa đổi thay thế và: khi lặp lại phụ đề nhiều lần nếu cần.

Hơn nữa, t/csh không yêu cầu trích dẫn các chuỗi trống, cũng như các biến không yêu cầu đánh giá bắt buộc.

1
set list = one,two,three 
foreach i ($list:as/,/ /) 
    echo $i 
end 
Các vấn đề liên quan