다음 스크립트를 사용할 때 "권한 거부" 오류가 발생하는 이유는 무엇입니까?
#!/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%' )