web-dev-qa-db-ja.com

kshで同じ値を持つ複数の変数をエクスポートする方法は?

次の変数を1行で同じ値に設定したい

Example:  export A=B=C=20

「bash」で使用できる構文がありますが、kshで上記をどのように達成できますか?

8
Sathish Kumar

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が空または存在しない場合も機能しません。

編集

Ksh93arithmetic表記doesは実際には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

cをエクスポートしないことに注意してください。子シェルの値は実際には空です。

13
Henk Langeveld

これが私の解決策の例です:

$> 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で設定し、そのコマンドを実行します。その後、(&&は残りの変数をHTTP_PROXYと同じ値に設定します] 。

1
papaiatis
export a=60 && export b=60 && export c=60

変数が多い場合、最適なオプションではない可能性があります

0
Raj