setenv与csh中的列表

时间:2013-07-23 21:47:19

标签: shell unix csh tcsh

以下在tcsh中有用:

set SOMEVAR=(1 2 3 4 5 6 7)

我需要将SOMEVAR传播到子进程,但是

truffles:rlaplant[154] setenv SOMEVAR (1 2 3 4 5 6 7)
Badly placed ()'s.

(我必须在csh中执行此操作,因为我必须source输出一些非常复杂的脚本,并且将它们全部转换为Bash需要付出很多努力。)

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:1)

csh的内部shell变量可以是字符串或数组。环境变量只能是字符串。

例如,csh shell变量$path镜像环境变量$PATH$path是目录名称数组; $PATH是一个字符串,由以:个字符分隔的相同目录名组成。

您将不得不在单个字符串中推送数组值,使用一些一致的语法来表明它们是数组。如果元素永远不能包含任何空格,那么用空格分隔单词就足够了。否则,您可以考虑使用$PATH使用的相同机制,并按:个字符分隔元素。

如果元素可以包含:个字符,并且您无法选择一些永远不会出现的其他字符,那么事情会变得更加复杂。你只需要做一些编程。

Obligatory link

答案 1 :(得分:0)

您可以使用此解决方法:

set tempvar=(1 2 3 4 5 6 7)
setenv somevar "$tempvar"

虽然我不确定它会不会是阵列。