Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to export multiple variables with same value in ksh?

Tags:

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 ?

like image 910
Sathish Kumar Avatar asked Oct 09 '15 06:10

Sathish Kumar


People also ask

How do I export multiple variables?

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' .

How do I export variables in ksh?

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.

How do I assign multiple variables in awk?

This is the solution. One can also write like this: var=( echo ${blabla} | awk -F"_" '{print $1 " " $3}' )... – X.M.

How do I store multiple values in one variable UNIX?

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).


2 Answers

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=

Awkward alternatives

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.

Arithmetic notation

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.

like image 112
Henk Langeveld Avatar answered Oct 24 '22 20:10

Henk Langeveld


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.

like image 34
papaiatis Avatar answered Oct 24 '22 21:10

papaiatis