看板 LinuxDev 關於我們 聯絡資訊
在 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
xlk:set a = ( 'single quote and' "double quote is different" ) 05/30 08:33
koalahsu:謝謝,之前有試過用 ' " 了,可能是發生什麼誤會才不行 05/31 03:40
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)
xlk:set array=($array "$string") 也只能讓最後一個含有空白 05/31 09:09
xlk:這種設值方式讓先前在$array中含有空白的element都會被切開.. 05/31 09:12
dozer:bash的話可以改IFS,用別的符號分隔array 05/31 20:58
dozer:csh真的很不推 Orz 05/31 20:58
koalahsu:所以請問還有什麼方式可以解決這問題 05/31 22:02
koalahsu:開始寫 csh 才覺得 bash 的好XD,不過我這程式一定要 05/31 22:03
koalahsu:用 csh ...,囧 05/31 22:03
xlk:不能只用一次set? 或每次取得檔名就處理掉? 06/01 14:18
dozer:是我的話可能會寫個外部的程式去處理csh無法處理的事情 06/01 19:10
dozer:csh的瑕疵太多了 很多問題是完全無解的 06/01 19:11
dozer:雖然我不確定這個情況是不是啦 06/01 19:11
koalahsu:可以考慮只用一次 set , 應該可以將所有需要的內容都 06/03 02:14
koalahsu:先處理好,會再試試看,感謝 06/03 02:14
koalahsu:如果像是考慮使用外部程式去處理的話,有些時應該該 06/03 02:16
koalahsu:就全部不要用 csh 了 XD 06/03 02:17
koalahsu:感謝幫忙解答 06/03 02:27
xlk:我在想也許能開個暫存檔讀寫, 不知道csh有沒有這能力. 06/03 08:03