Shell 如何以ksh格式导出具有相同值的多个变量?

Shell 如何以ksh格式导出具有相同值的多个变量?,shell,unix,ksh,Shell,Unix,Ksh,我想在一行中将以下变量设置为相同的值 Example: export A=B=C=20 “bash”中有可用的语法,但如何在ksh中实现上述功能 export a=60 && export b=60 && export c=60 如果您有许多变量,那么Ksh93(或bash)没有这样的表达式,这可能不是最好的选择,因此它更好 使之明确。但是您可以绑定多个变量 (及其初始值)在单个导出短语中: export A=1 B=2 C=3 测试: $ (export

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

Example:  export A=B=C=20
“bash”中有可用的语法,但如何在ksh中实现上述功能

export a=60 && export b=60 && export c=60
如果您有许多变量,那么Ksh93(或bash)没有这样的表达式,这可能不是最好的选择,因此它更好 使之明确。但是您可以绑定多个变量 (及其初始值)在单个
导出
短语中:

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
。。。当B或C为空或不存在时,它也不起作用

算术符号 Ksh93算术表示法实际上支持C样式的链式赋值,但出于明显的原因,这只适用于数字,然后您必须分别执行
导出

$ ((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'     # Single quotes prevent immediate substitution
a=1234 b=1234 c= d=d1234                # so new ksh instance has no value for $c

请注意,我们如何不导出
c
,它在子shell中的值实际上是空的。

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

$>导出HTTP\u代理=http://my.company.proxy:8080 &&导出http\u proxy=$http\u proxy https\u proxy=$http\u proxy https\u proxy=$http\u 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\u PROXY
变量设置为
export
并执行该命令,然后(
&&
注意)将其余变量设置为与
HTTP\u PROXY
相同的值,谢谢您的回答。但是,有C吗“导出多个变量时在shell中赋值的等价性我不确定C等价性是什么意思……你能解释一下吗?”。另外,如果你告诉我你的问题的目的是什么,也许我能回答得更好。在“C”中,我们可以给同一个值分配多个变量,例如:int a,b,C;a=b=c=10;我问这个问题是为了将“.profile”中的“变量”分组,它对于
ksh
具有相同的值,当然它是有效的。但对于其他(较旧的)shell,在2次内编写导出是一种很好的语法:
var=value;出口风险值
这就是答案的核心。当值包含空格时,如何使用语法
export a=1 b=2 C=3
export a=“Just use quotes”
只需执行以下操作:export{a,b,C}=20