I understand the colon operator in bash that acts like a null, and I know it's used in parameter expansion, as well as being used other ways, but can someone explain this:
: ${SOMETHING='value'}
From experimentation I know that this sets the environment variable $SOMETHING
to 'value'
but why?
"Just because it does" is a valid answer but then please point me to the documentation for it (which I can't seem to find) or a proper name for this usage would be useful. I'm hoping there's a more enlightening explanation though.
Specifies the search path for the executable files. Include a colon ( : ) separator between the path names on UNIX systems. (Use the semicolon ( ; ) separator between path names on Windows systems.) You can specify the search path in various ways.
Colon operators perform element-by-element operations. The matrices above are said to be c-conformable; the c stands for colon. The matrices have the same number of rows and columns, or one or the other is a vector with the same number of rows or columns as the matrix, or one or the other is a scalar.
The : (colon) command is used when a command is needed, as in the then condition of an if command, but nothing is to be done by the command. This command simply yields an exit status of zero (success). This can be useful, for example, when you are evaluating shell expressions for their side effects.
column command in Linux is used to display the contents of a file in columns. The input may be taken from the standard input or from the file. This command basically breaks the input into multiple columns. Rows are filled before columns. Empty lines from the input are ignored unless the -e option is used.
The expression ${SOMETHING='value'}
sets SOMETHING to value
if it isn't already set. This is a useful operator to have in many situations. However, it also returns the assigned value, so if you simply executed
${SOMETHING='value'}
then your shell would try to invoke the command value
. This might or might not do something unwanted; at the least it would throw a message "value: command not found".
To avoid this you can use the no-op :
, which evaluates its argument and then throws it away, rather than executing it. This is documented here.
Explained here : http://tldp.org/LDP/abs/html/parameter-substitution.html
If parameter not set, set it to default.
Both forms nearly equivalent. The : makes a difference only when $parameter has been declared and is null, [1] as above.
echo ${var=abc} # abc echo ${var=xyz} # abc # $var had already been set to abc, so it did not change.
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