[CentOS] bash: return status of an assignment

Sun Feb 28 00:41:10 UTC 2021
Gordon Messmer <gordon.messmer at gmail.com>

On 2/27/21 1:32 PM, Kenneth Porter wrote:
> [ -z "$INSMOD" ] && INSMOD=$(which modprobe) || INSMOD=$(which insmod)
>
> It seems to set INSMOD to /usr/sbin/insmod, even though 
> /usr/sbin/modprobe is available. (Both are symlinks to ../bin/kmod.) 


     [ -z "$INSMOD" ] && INSMOD=$(which modprobe) || INSMOD=$(which insmod)

This should be re-written as:

     [ -z "$INSMOD" ] && { INSMOD=$(which modprobe) || INSMOD=$(which 
insmod) ; }

As it is currently written, if INSMOD is set previously, it will be 
replaced with the output of "which insmod".  That is, the final 
statement will be evaluated if either INSMOD was set previously, or if 
"which modprobe" exits with a non-zero status.

It's unlikely that this is a PATH issue since both modprobe and insmod 
are in the same directory.  The most likely explanation is that $INSMOD 
had a value before that line was evaluated.