為什麼使用以下腳本時會出現「權限被拒絕」錯誤:
#!/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/類/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%'
shell 不知道將其作為命令執行並將輸出儲存在變數編號中。試試這個: 或者
number=`echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%' `
number=$( echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%' )