파일을 반복하고 파일 이름의 값을 추출합니다. 스크립트가 작동하지 않습니다

파일을 반복하고 파일 이름의 값을 추출합니다. 스크립트가 작동하지 않습니다

다음 스크립트를 사용할 때 "권한 거부" 오류가 발생하는 이유는 무엇입니까?

#!/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

내가 예상한 것은 $number에 /sys/class/rc/rc[0-2] 경로에 대한 "숫자" 값이 포함되어 있다는 것이었습니다. 대신 "echo" 명령이 /sys/class/ 파일을 캡처하려고 시도하는 것 같았습니다. rc/rc[0-2 ].

특히 /sys/class/rc/rc1/device/driver/pwm-ir-transmitter가 존재하는 경우 출력됩니다.

lircprobe PWM 적외선 송신기

예:

/usr/local/sbin/lircprobe: 10: /usr/local/sbin/lircprobe: /sys/class/rc/rc1: 권한이 거부되었습니다.

(lircprobe는 위 스크립트의 이름입니다)

답변1

즉시 나는 이것을 본다:
number=echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%' 쉘은 이것을 명령으로 실행하고 출력을 변수 번호에 저장하는 방법을 모른다. 이것을 시도하십시오: 또는
number=`echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%' `

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

관련 정보