如何在ksh中导出具有相同值的多个变量?

时间:2015-10-09 06:12:17

标签: shell unix ksh

我想在一行中将以下变量设置为相同的值

Example:  export A=B=C=20

“bash”中有一种语法,但如何在 ksh 中完成上述操作?

3 个答案:

答案 0 :(得分:8)

Ksh93(或bash)没有这样的表达式,所以它更好 使其明确。但是你可以捆绑多个变量 (使用其初始值)在一个export短语中:

export A=1 B=2 C=3

测试:

$ (export A=1 B=2 C=3 && ksh -c 'echo A=$A B=$B C=$C D=$D')
A=1 B=2 C=3 D=

没有类似C的快捷方式,除非你想要这个丑陋的东西:

A=${B:=${C:=1}}; echo $A $B $C
1 1 1

...不适用于export,当B或C为空或不存在时也不起作用。

修改

Ksh93 算术符号确实实际上支持C风格的链式分配,但由于显而易见的原因,这仅适用于数字,然后您必须执行{ {1}}分开:

export

请注意我们如何导出$ ((a=b=c=d=1234)) $ echo $a $b $c $d 1234 1234 1234 1234 $ export a b d $ ksh -c 'echo a=$a b=$b c=$c d=$d' a=1234 b=1234 c= d=d1234 ,并且它在子shell中的值确实是空的。

答案 1 :(得分:1)

export a=60 && export b=60 && export c=60

如果你有很多变数,可能不是最好的选择

答案 2 :(得分:1)

以下是我的示例解决方案:

$> export HTTP_PROXY=http://my.company.proxy:8080 && export http_proxy=$HTTP_PROXY https_proxy=$HTTP_PROXY HTTPS_PROXY=$HTTP_PROXY

$> printenv | grep -i proxy
http_proxy=http://my.company.proxy:8080
HTTPS_PROXY=http://my.company.proxy:8080
https_proxy=http://my.company.proxy:8080
HTTP_PROXY=http://my.company.proxy:8080

<强>解释

首先,我将HTTP_PROXY变量设置为export并执行该命令,并且仅在此之后(&&注释)将剩余变量设置为与{{1}相同的值}}