Issue
I searched for noop in bash (:), but was not able to find any good information. What is the exact purpose or use case of this operator?
I tried following and it's working like this for me:
[mandy@root]$ a=11
[mandy@root]$ b=20
[mandy@root]$ c=30
[mandy@root]$ echo $a; : echo $b ; echo $c
10
30
Please let me know, any use case of this operator in real time or any place where it is mandatory to use it.
Solution
It's there more for historical reasons. The colon builtin :
is exactly equivalent to true
. It's traditional to use true
when the return value is important, for example in an infinite loop:
while true; do
echo 'Going on forever'
done
It's traditional to use :
when the shell syntax requires a command but you have nothing to do.
while keep_waiting; do
: # busy-wait
done
The :
builtin dates all the way back to the Thompson shell, it was present in Unix v6. :
was a label indicator for the Thompson shell's goto
statement. The label could be any text, so :
doubled up as a comment indicator (if there is no goto comment
, then : comment
is effectively a comment). The Bourne shell didn't have goto
but kept :
.
A common idiom that uses :
is : ${var=VALUE}
, which sets var
to VALUE
if it was unset and does nothing if var
was already set. This construct only exists in the form of a variable substitution, and this variable substitution needs to be part of a command somehow: a no-op command serves nicely.
See also What purpose does the colon builtin serve?.
Answered By - Gilles 'SO- stop being evil' Answer Checked By - David Marino (WPSolving Volunteer)