作者koalahsu (koala)
看板LinuxDev
標題[問題] csh 語法問題
時間Sat May 29 22:49:58 2010
在 csh 中使用 array 的時候是像是這樣的
set a = ( a b c d )
用空白來當作分隔
我遇到的問題是
如果有字串裡面有空白可是我還是想要放在同一個 index
請問這有辦法做到嗎?
set array =
foreach i ( `seq 1 3` )
set string = "$i aa"
set array = ($array $string)
end
foreach i ( `seq 1 3` )
echo ${array[$i]}
end
目前想到的解法只有先把空白換成別的不會用到的長字串
然後再換回來= =
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.48.140
1F:→ xlk:set a = ( 'single quote and' "double quote is different" ) 05/30 08:33
2F:→ koalahsu:謝謝,之前有試過用 ' " 了,可能是發生什麼誤會才不行 05/31 03:40
3F:→ koalahsu:我把上面的程式碼改成這樣,還是沒有辦法 05/31 03:50
無論是使用 ' 或是 "
或是交錯使用好像沒有辦法讓他可以用空白區隔
請問問題是出在 set array = ($array $string) 地方嗎?
foreach i ( `seq 1 3` )
if ( $i % 2 == 0 ) then
set string = "'aa bb'"
echo $string
else
set string = '"aa bb"'
echo $string
endif
set array = ($array $string)
end
※ 編輯: koalahsu 來自: 140.112.48.140 (05/31 03:53)
※ 編輯: koalahsu 來自: 140.112.48.140 (05/31 03:55)
4F:→ xlk:set array=($array "$string") 也只能讓最後一個含有空白 05/31 09:09
5F:→ xlk:這種設值方式讓先前在$array中含有空白的element都會被切開.. 05/31 09:12
6F:推 dozer:bash的話可以改IFS,用別的符號分隔array 05/31 20:58
7F:推 dozer:csh真的很不推 Orz 05/31 20:58
8F:→ koalahsu:所以請問還有什麼方式可以解決這問題 05/31 22:02
9F:→ koalahsu:開始寫 csh 才覺得 bash 的好XD,不過我這程式一定要 05/31 22:03
10F:→ koalahsu:用 csh ...,囧 05/31 22:03
11F:→ xlk:不能只用一次set? 或每次取得檔名就處理掉? 06/01 14:18
12F:推 dozer:是我的話可能會寫個外部的程式去處理csh無法處理的事情 06/01 19:10
13F:推 dozer:csh的瑕疵太多了 很多問題是完全無解的 06/01 19:11
14F:推 dozer:雖然我不確定這個情況是不是啦 06/01 19:11
15F:→ koalahsu:可以考慮只用一次 set , 應該可以將所有需要的內容都 06/03 02:14
16F:→ koalahsu:先處理好,會再試試看,感謝 06/03 02:14
17F:→ koalahsu:如果像是考慮使用外部程式去處理的話,有些時應該該 06/03 02:16
18F:→ koalahsu:就全部不要用 csh 了 XD 06/03 02:17
19F:→ koalahsu:感謝幫忙解答 06/03 02:27
20F:→ xlk:我在想也許能開個暫存檔讀寫, 不知道csh有沒有這能力. 06/03 08:03