以下在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需要付出很多努力。)
有办法做到这一点吗?
答案 0 :(得分:1)
csh
的内部shell变量可以是字符串或数组。环境变量只能是字符串。
例如,csh shell变量$path
镜像环境变量$PATH
。 $path
是目录名称数组; $PATH
是一个字符串,由以:
个字符分隔的相同目录名组成。
您将不得不在单个字符串中推送数组值,使用一些一致的语法来表明它们是数组。如果元素永远不能包含任何空格,那么用空格分隔单词就足够了。否则,您可以考虑使用$PATH
使用的相同机制,并按:
个字符分隔元素。
如果元素可以包含:
个字符,并且您无法选择一些永远不会出现的其他字符,那么事情会变得更加复杂。你只需要做一些编程。
答案 1 :(得分:0)
您可以使用此解决方法:
set tempvar=(1 2 3 4 5 6 7)
setenv somevar "$tempvar"
虽然我不确定它会不会是阵列。