首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cshell setenv:太多的论点

cshell setenv:太多的论点
EN

Stack Overflow用户
提问于 2014-07-01 09:58:32
回答 4查看 12.6K关注 0票数 0

我在c-shell

代码语言:javascript
复制
    set value_str ="one three"
    set line_seprator = ","
    set value_and_sperator = "$value_str$line_seprator"
    setenv STRING_CONCAT $STRING_CONCAT$value_and_sperator

我犯了错误:

代码语言:javascript
复制
setenv: Too many arguments.

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-01 10:06:35

只需要将字符串用引号括起来-否则csh被分隔符弄糊涂了。

代码语言:javascript
复制
setenv STRING_CONCAT "$STRING_CONCAT$value_and_sperator"
票数 4
EN

Stack Overflow用户

发布于 2019-05-17 17:39:24

可以设置以空格分隔的列表。

代码语言:javascript
复制
setenv value_str "val1 val2"

然后在剧本里

代码语言:javascript
复制
set varxyz= ( ${value_str} )
set xyzList = "$varxyz"

foreach val ( $xyzList )
 echo "val: $val"
end
票数 0
EN

Stack Overflow用户

发布于 2020-04-29 11:39:01

我认为大多数setenv问题的出现是因为人们不理解env变量是标量变量,也就是说,您可以循环使用由

代码语言:javascript
复制
set a = (1 2 3)   

这在env变量中是不可能的。之后

代码语言:javascript
复制
setenv A "1 2" 

命令

代码语言:javascript
复制
echo $A[1]

不输出$A的预期第一个组件,即1,而是写入

代码语言:javascript
复制
1 2[1]

若要通过env变量A和其元素上的循环将向量传递给脚本,可以使用

代码语言:javascript
复制
set a = ($A)
foreach i ($a) ...
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24507402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档