作者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