Running alsaconf version 0.9.0 under Red Hat 9.0 with the Planet CCRMA kernel and ALSA setup... In running alsaconf to try to configure ALSA for my system's sound card (reported as an "ens1371 Ensoniq 5880 AudioPCI (rev 03)"), I get the following errors: /usr/sbin/alsaconf: line 340: let: a=(>>2) & 0x3f: syntax error: operand expected (error token is ">>2) & 0x3f") /usr/sbin/alsaconf: line 341: let: b=(( & 0x03) << 3) | (( >> 13) & 0x07): syntax error: operand expected (error token is "& 0x03) << 3) | (( >> 13) & 0x07)") /usr/sbin/alsaconf: line 342: let: c=(>> 8) & 0x1f: syntax error: operand expected (error token is ">> 8) & 0x1f") /usr/sbin/alsaconf: line 349: let: v=((>>8)&0xff)|((&0xff)<<8): syntax error: operand expected (error token is ">>8)&0xff)|((&0xff)<<8)") These come from the following function: # convert ISA PnP id number to string 'ABC' convert_isapnp_id () { let a='('$1'>>2) & 0x3f' let b='(('$1' & 0x03) << 3) | (('$1' >> 13) & 0x07)' let c='('$1'>> 8) & 0x1f' strs='@ABCDEFGHIJKLMNOPQRSTUVWXYZ' echo ${strs:$a:1}${strs:$b:1}${strs:$c:1} } which is only called here: # list isapnp cards while read driver cardvendor carddevice data vendor func; do if expr $driver : 'snd-.*' >/dev/null ; then if [ "$last_driver" != "$driver" ]; then echo $driver.o last_driver=$driver fi id1=`convert_isapnp_id $cardvendor` dev1=`swap_number $carddevice` id2=`convert_isapnp_id $vendor` dev2=`swap_number $func` echo "ISAPNP: $id1$dev1=$id2$dev2" fi done < $MODDIR/modules.isapnpmap >> $1 } This suggests that there's some problem with the "cardvendor" value... but here I fall off the edge of my knowledge. Does this look familiar, and is there a way to fix it?