循環遍歷檔案並提取檔案名稱中的值。腳本不工作

循環遍歷檔案並提取檔案名稱中的值。腳本不工作

為什麼使用以下腳本時會出現「權限被拒絕」錯誤:

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

相關內容