I want to set the following variables to the same value in one single line
Example: export A=B=C=20
There is a syntax available in 'bash' but how can I accomplish the above in ksh ?
Use named exports to export multiple variables in TypeScript, e.g. export const A = 'a' and export const B = 'b' . The exported variables can be imported by using a named import as import {A, B} from './another-file' .
sh, or ksh To set an environment variable in sh or ksh, use the syntax VAR=value;export VAR, where VAR is the name of the environment variable and value is the value you wish to assign.
This is the solution. One can also write like this: var=( echo ${blabla} | awk -F"_" '{print $1 " " $3}' )... – X.M.
Here is how it works. At first, both variables xyz and sep are unset, so expanding them (that is, $xyz and $sep ) leads to empty strings. The sep variable represents a separator which is empty initially. After the first iteration, the xyz variable is set to a and the sep variable is set to (a space).
Ksh93 (or bash) doesn't have such expressions, so it's better
to make it explicit. But you can bundle multiple variables
(with their initial values) in a single export
phrase:
export A=1 B=2 C=3
Testing:
$ (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=
There is no C-like shortcut, unless you want this ugly thing:
A=${B:=${C:=1}}; echo $A $B $C
1 1 1
... which does not work with export
, nor does it work when B or C are empty or non-existent.
Ksh93 arithmetic notation does actually support C-style chained assignments, but for obvious reasons, this only works with numbers, and you'll then have to do the export
separately:
$ ((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
Note how we do not export c
, and its value in the child shell is indeed empty.
Here is my example solution for this:
$> 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
Explanation
At first I set the HTTP_PROXY
variable with export
and execute that command and only after that (&&
notes that) set the remaining variables to the same value as of HTTP_PROXY
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With