Recorriendo archivos y extrayendo valor en el nombre del archivo. El guión no funciona

Recorriendo archivos y extrayendo valor en el nombre del archivo. El guión no funciona

¿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%' )

información relacionada