2

以下在 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 会很费力。)

有没有办法做到这一点?

4

2 回答 2

1

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

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

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

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

必填链接

于 2013-07-25T22:02:26.130 回答
1

您可以使用此解决方法:

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

虽然我不确定它是否会保留一个数组。

于 2013-07-25T21:55:16.823 回答