[問題] csh 語法問題

看板LinuxDev作者 (koala)時間15年前 (2010/05/29 22:50), 編輯推噓5(5015)
留言20則, 3人參與, 最新討論串1/1
在 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

05/30 08:33, , 1F
set a = ( 'single quote and' "double quote is different" )
05/30 08:33, 1F

05/31 03:40, , 2F
謝謝,之前有試過用 ' " 了,可能是發生什麼誤會才不行
05/31 03:40, 2F

05/31 03:50, , 3F
我把上面的程式碼改成這樣,還是沒有辦法
05/31 03:50, 3F
無論是使用 ' 或是 " 或是交錯使用好像沒有辦法讓他可以用空白區隔 請問問題是出在 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)

05/31 09:09, , 4F
set array=($array "$string") 也只能讓最後一個含有空白
05/31 09:09, 4F

05/31 09:12, , 5F
這種設值方式讓先前在$array中含有空白的element都會被切開..
05/31 09:12, 5F

05/31 20:58, , 6F
bash的話可以改IFS,用別的符號分隔array
05/31 20:58, 6F

05/31 20:58, , 7F
csh真的很不推 Orz
05/31 20:58, 7F

05/31 22:02, , 8F
所以請問還有什麼方式可以解決這問題
05/31 22:02, 8F

05/31 22:03, , 9F
開始寫 csh 才覺得 bash 的好XD,不過我這程式一定要
05/31 22:03, 9F

05/31 22:03, , 10F
用 csh ...,囧
05/31 22:03, 10F

06/01 14:18, , 11F
不能只用一次set? 或每次取得檔名就處理掉?
06/01 14:18, 11F

06/01 19:10, , 12F
是我的話可能會寫個外部的程式去處理csh無法處理的事情
06/01 19:10, 12F

06/01 19:11, , 13F
csh的瑕疵太多了 很多問題是完全無解的
06/01 19:11, 13F

06/01 19:11, , 14F
雖然我不確定這個情況是不是啦
06/01 19:11, 14F

06/03 02:14, , 15F
可以考慮只用一次 set , 應該可以將所有需要的內容都
06/03 02:14, 15F

06/03 02:14, , 16F
先處理好,會再試試看,感謝
06/03 02:14, 16F

06/03 02:16, , 17F
如果像是考慮使用外部程式去處理的話,有些時應該該
06/03 02:16, 17F

06/03 02:17, , 18F
就全部不要用 csh 了 XD
06/03 02:17, 18F

06/03 02:27, , 19F
感謝幫忙解答
06/03 02:27, 19F

06/03 08:03, , 20F
我在想也許能開個暫存檔讀寫, 不知道csh有沒有這能力.
06/03 08:03, 20F
文章代碼(AID): #1C0IcOgp (LinuxDev)
文章代碼(AID): #1C0IcOgp (LinuxDev)