다음 스크립트에서 "권한 거부" 오류가 발생하는 이유는 무엇입니까?
#!/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/ 파일을 cat하려고 시도하는 것 같습니다. 클래스/rc/rc[0-2].
특히, /sys/class/rc/rc1/device/driver/pwm-ir-transmitter가 존재하는 경우,
lircprobe PWM-IR-송신기
이다:
/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%' )