我怎样才能将 csh 数组元素与 space 以外的东西分开?
How can I separate csh array elements with something other than a space?
在我正在处理的 csh 脚本中,我需要包含 spaces 的数组元素,因此我需要使用 space 以外的其他内容分隔这些元素,例如逗号。例如,我想用类似的东西初始化我的数组:
set the_array=('Element 1','Element 2','Element 3','Element 4')
注意:我很清楚在 csh 中工作是多么不受欢迎。然而,对于这个项目,我别无选择……是的,我试图说服那些应该改变的权力,但已经有一个庞大的代码库需要重写,所以这就是被拒绝了。
在 CSH 中有两种初始化字符串数组(其中包含空格)的方法:
第一种方式,使用逗号,使用大括号语法,或者"glob pattern":
% set the_array = {'Element 1','Element 2','Element 3','Element 4'}
% echo $the_array[1]
Element 1
第二种方式,不带逗号,使用括号:
% set the_array = ('Element 1' 'Element 2' 'Element 3' 'Element 4')
% echo $the_array[1]
Element 1
这种方式还允许您创建多行数组:
% set the_array = ('Element 1' \
? 'Element 2')
% echo $the_array[1]
Element 1
% echo $the_array[2]
Element 2
要遍历 the_array
,您不能简单地访问 foreach
中的每个元素,如下所示:
% foreach i ( $the_array )
foreach? echo $i
foreach? end
Element
1
Element
2
Element
3
Element
4
需要从1循环到N,其中N是数组的长度,使用seq
,如下图:
% foreach i ( `seq $the_array` )
foreach? echo $the_array[$i]
foreach? end
Element 1
Element 2
Element 3
Element 4
请注意,CSH 使用从 1 开始的索引。
不幸的是,如您所见,使用带逗号的括号会产生以下结果:
% set the_array = ('Element 1','Element 2','Element 3','Element 4')
% echo $the_array[1]
Element 1,Element 2,Element 3,Element 4
来源
https://unix.stackexchange.com/questions/80934/c-shell-array-declaration-syntax-vs
Csh adding strings to an array, whitespace troubles
在我正在处理的 csh 脚本中,我需要包含 spaces 的数组元素,因此我需要使用 space 以外的其他内容分隔这些元素,例如逗号。例如,我想用类似的东西初始化我的数组:
set the_array=('Element 1','Element 2','Element 3','Element 4')
注意:我很清楚在 csh 中工作是多么不受欢迎。然而,对于这个项目,我别无选择……是的,我试图说服那些应该改变的权力,但已经有一个庞大的代码库需要重写,所以这就是被拒绝了。
在 CSH 中有两种初始化字符串数组(其中包含空格)的方法:
第一种方式,使用逗号,使用大括号语法,或者"glob pattern":
% set the_array = {'Element 1','Element 2','Element 3','Element 4'}
% echo $the_array[1]
Element 1
第二种方式,不带逗号,使用括号:
% set the_array = ('Element 1' 'Element 2' 'Element 3' 'Element 4')
% echo $the_array[1]
Element 1
这种方式还允许您创建多行数组:
% set the_array = ('Element 1' \
? 'Element 2')
% echo $the_array[1]
Element 1
% echo $the_array[2]
Element 2
要遍历 the_array
,您不能简单地访问 foreach
中的每个元素,如下所示:
% foreach i ( $the_array )
foreach? echo $i
foreach? end
Element
1
Element
2
Element
3
Element
4
需要从1循环到N,其中N是数组的长度,使用seq
,如下图:
% foreach i ( `seq $the_array` )
foreach? echo $the_array[$i]
foreach? end
Element 1
Element 2
Element 3
Element 4
请注意,CSH 使用从 1 开始的索引。
不幸的是,如您所见,使用带逗号的括号会产生以下结果:
% set the_array = ('Element 1','Element 2','Element 3','Element 4')
% echo $the_array[1]
Element 1,Element 2,Element 3,Element 4
来源
https://unix.stackexchange.com/questions/80934/c-shell-array-declaration-syntax-vs
Csh adding strings to an array, whitespace troubles