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

Sat*_*mar 6 unix shell ksh

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

Example:  export A=B=C=20
Run Code Online (Sandbox Code Playgroud)

'bash'中有一个语法,但我怎样才能在ksh中完成上述操作?

Hen*_*eld 11

Ksh93(或bash)没有这样的表达式,所以最好将它显式化.但是您可以将多个变量(及其初始值)捆绑在一个export短语中:

export A=1 B=2 C=3
Run Code Online (Sandbox Code Playgroud)

测试:

$ (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=
Run Code Online (Sandbox Code Playgroud)

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

A=${B:=${C:=1}}; echo $A $B $C
1 1 1
Run Code Online (Sandbox Code Playgroud)

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

编辑

ksh93的算术符号并不真正支持C风格的链式任务,但由于显而易见的原因,这仅与数字作品,然后你必须做的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
Run Code Online (Sandbox Code Playgroud)

注意我们如何不导出c,它在子shell中的值确实是空的.


小智 1

export a=60 && export b=60 && export c=60
Run Code Online (Sandbox Code Playgroud)

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