shell - Variable assignment in Unix -


this question has answer here:

when try following statements, doesn't assign values variables , loop goes infinite-

while ( [ $nos -ne 0 ] )     rem = `expr $nos % 10`     sum = `expr $sum + $rem`     nos = `expr $nos / 10` done 

but when remove spaces left , right side of assignment operator, works fine. -

while ( [ $nos -ne 0 ] )     rem=`expr $nos % 10`     sum=`expr $sum + $rem`     nos=`expr $nos / 10` done 

why shell behaviour that?

rem = `expr $nos % 10` 

runs command rem first argument =.

if weren't posix sh standard requiring assignments parse single word (which does), 1 couldn't pass = first argument command or function; hence, standard being written is.


there's further expressive power based on whitespace in assignments well. instance:

rem= foo 

...runs foo environment variable rem set empty string duration of single command's execution, as

var=val foo 

sets var val while running foo. useful syntax; if var=val foo equivalent var="val foo", not possible.


Comments

Popular posts from this blog

django - (fields.E300) Field defines a relation with model 'AbstractEmailUser' which is either not installed, or is abstract -

matlab - error with cyclic autocorrelation function -

php - Using grpc in Laravel, "Class 'Grpc\ChannelCredentials' not found." -