cshell setenv:参数太多

cshell setenv:参数太多,csh,Csh,我有一个c-shell set value_str ="one three" set line_seprator = "," set value_and_sperator = "$value_str$line_seprator" setenv STRING_CONCAT $STRING_CONCAT$value_and_sperator 我得到一个错误: setenv: Too many arguments. 这就是我在脚本中设置全局变量的方法,知道我为什么会

我有一个c-shell

    set value_str ="one three"
    set line_seprator = ","
    set value_and_sperator = "$value_str$line_seprator"
    setenv STRING_CONCAT $STRING_CONCAT$value_and_sperator
我得到一个错误:

setenv: Too many arguments.

这就是我在脚本中设置全局变量的方法,知道我为什么会出错吗?

只需要将字符串括在引号中-
csh
被分隔符弄糊涂了

setenv STRING_CONCAT "$STRING_CONCAT$value_and_sperator"

只需检查在给出setenv的行中,该行是否应以$STRING\u CONCAT$value\u和\u sperator结尾。之后没有选项卡或空间。这也可能导致这个问题。即使是多个值(例如“.”)

您也可以设置一个以空格分隔的列表

setenv value_str "val1 val2"
然后在剧本里

set varxyz= ( ${value_str} )
set xyzList = "$varxyz"

foreach val ( $xyzList )
 echo "val: $val"
end

我觉得大多数
setenv
问题的出现是因为人们不理解env变量是标量变量,也就是说,您可能会循环使用由定义的
$a
的值

set a = (1 2 3)   
这在使用env变量时是不可能的。之后

setenv A "1 2" 
命令

echo $A[1]
不输出
$A
的预期第一个组件,即1,但写入

1 2[1]
要通过env变量
a
将向量传递给脚本并循环其元素,可以使用

set a = ($A)
foreach i ($a) ...