¿Por qué aparece el error "Permiso denegado" con el siguiente script?
#!/bin/sh
if [ -z $1 ]; then
echo "no argument given"
exit 1
fi
for i in /sys/class/rc/rc*; do
if [ -e "$i/device/driver/$1" ]; then
number=echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%'
echo "found $number"
fi
done
Lo que esperaría que sucediera es que $número contenga el valor de "dígito" de la ruta /sys/class/rc/rc[0-2]; en cambio, el comando "echo" parece intentar capturar el archivo /sys/ clase/rc/rc[0-2].
En particular, si /sys/class/rc/rc1/device/driver/pwm-ir-transmitter existe, la salida de
lircprobe pwm-transmisor-ir
es:
/usr/local/sbin/lircprobe: 10: /usr/local/sbin/lircprobe: /sys/class/rc/rc1: Permiso denegado
(lircprobe es el nombre del script, arriba)
Respuesta1
Algo que veo de inmediato:
number=echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%'
el shell no sabe ejecutar eso como un comando y almacenar la salida en la variable número. Pruebe esto en su lugar: o
number=`echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%' `
number=$( echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%' )