为什么使用以下脚本时会出现“权限被拒绝”错误:
#!/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%' )