循环遍历文件并提取文件名中的值。脚本不工作

循环遍历文件并提取文件名中的值。脚本不工作

为什么使用以下脚本时会出现“权限被拒绝”错误:

#!/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%' )

相关内容