Bash: (foo==0)?foo=1:foo=0 valid?

Daniel B. Thurman dant at cdkkt.com
Sat Jul 2 19:07:29 UTC 2011


On 07/02/2011 11:30 AM, Robert Nichols wrote:
> On 07/02/2011 12:45 PM, Daniel B. Thurman wrote:
>> I seem to forget my shell programming
>> but is the following statement valid?
>>
>> ($foo==0)?foo=1:foo=0
>>
>> I thought it was called the tristate conditional
>> operator but in any case I could not find it in
>> google.
> You need to enclose the entire expression in double parentheses to make
> bash parse it as an expression.  Plus, your syntax is slightly wrong:
>
>      ((($foo==0)?foo=1:0))
>
> or, since within an expression the '$' to reference a variable is optional:
>
>      (((foo==0)?foo=1:0))
>
> and, if you want to insert the result directly into a command line:
>
>      echo $(((foo==0)?1:0))
> or
>      echo $(((foo==0)?foo=1:0))
>
Thanks - this is good information!
I used:  (((foo==0)?foo=1:0)) and it works in a bash script!

Will add this to my bookmarks! :)



More information about the users mailing list