Percorrendo arquivos e extraindo valor no nome do arquivo. Script não funciona

Percorrendo arquivos e extraindo valor no nome do arquivo. Script não funciona

Por que recebo um erro de "Permissão negada" com o seguinte 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

O que eu esperaria que acontecesse é que $number contenha o valor "dígito" do caminho /sys/class/rc/rc[0-2], em vez disso, o comando "echo" parece tentar cat o arquivo /sys/ classe/rc/rc[0-2].

Em particular, se /sys/class/rc/rc1/device/driver/pwm-ir-transmitter existir, a saída de

lircprobe pwm-ir-transmissor

é:

/usr/local/sbin/lircprobe: 10: /usr/local/sbin/lircprobe: /sys/class/rc/rc1: Permissão negada

(lircprobe é o nome do script acima)

Responder1

Algo que vejo imediatamente:
number=echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%' o shell não sabe executar isso como um comando e armazenar a saída na variável número. Em vez disso, tente isto: ou
number=`echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%' `

number=$( echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%' )

informação relacionada