xxx.sh: : 見つかりません

xxx.sh: : 見つかりません

シェルスクリプトのデバッグ中にこのエラーが発生しました。私のスクリプトで何が起こっているのかわかりません。

#!/system/bin/sh

function SetEQ(){
    prefFile='/mnt/media_rw/6633-3539/tmpFiles/com.smp.musicspeed_preferences.xml'
# a comment line that was deleted by me, sorry for that.

    case $1 in
            speaker) array=(0.0 0.0 0.0 -3.64 -10.66 -15.0 -6.49 0.0) ;;
            samsung) array=(0.0 2.9 0.0 -1.5 -6.4 2.7 0.0 0.0) ;;
                  *) exit ;;
    esac

    for i in ${!array[@]}; do
            sed -ir "s/(\"com.smp.equalizer.$i\" value=\")[^\"]*(\")/\1${array[$i]}\2/" "$prefFile"
    done
}

SetEQ samsung

次のようにスクリプトを実行するとき:# sh -vx ./test2.sh

デバッグ情報は次のとおりです。

+ SetEQ samsung
+ prefFile='/mnt/media_rw/6633-3539/tmpFiles/com.smp.musicspeed_preferences.xml'
+ set -A array -- 0.0 2.9 0.0 -1.5 -6.4 2.7 0.0 0.0
+   sed -ir 's/("com.smp.equalizer.0" value=")[^"]*(")/\10.0\2/' '/mnt/media_rw/6633-3539/tmpFiles/com.smp.musicspeed_preferences.xml'
./test2.sh[18]: : not found
+   sed -ir 's/("com.smp.equalizer.1" value=")[^"]*(")/\12.9\2/' '/mnt/media_rw/6633-3539/tmpFiles/com.smp.musicspeed_preferences.xml'
./test2.sh[18]: : not found
+   sed -ir 's/("com.smp.equalizer.2" value=")[^"]*(")/\10.0\2/' '/mnt/media_rw/6633-3539/tmpFiles/com.smp.musicspeed_preferences.xml'
./test2.sh[18]: : not found
+   sed -ir 's/("com.smp.equalizer.3" value=")[^"]*(")/\1-1.5\2/' '/mnt/media_rw/6633-353/tmpFiles/com.smp.musicspeed_preferences.xml'
./test2.sh[18]: : not found
+   sed -ir 's/("com.smp.equalizer.4" value=")[^"]*(")/\1-6.4\2/' '/mnt/media_rw/6633-353/tmpFiles/com.smp.musicspeed_preferences.xml'
./test2.sh[18]: : not found
+   sed -ir 's/("com.smp.equalizer.5" value=")[^"]*(")/\12.7\2/' '/mnt/media_rw/6633-3539/tmpFiles/com.smp.musicspeed_preferences.xml'
./test2.sh[18]: : not found
+   sed -ir 's/("com.smp.equalizer.6" value=")[^"]*(")/\10.0\2/' '/mnt/media_rw/6633-3539/tmpFiles/com.smp.musicspeed_preferences.xml'
./test2.sh[18]: : not found
+   sed -ir 's/("com.smp.equalizer.7" value=")[^"]*(")/\10.0\2/' '/mnt/media_rw/6633-3539/tmpFiles/com.smp.musicspeed_preferences.xml'
./test2.sh[18]: : not found

sed端末で直接実行するときは、この行に問題はないと言う必要があります。デバッグ情報は非常にあいまいです。見つからないものは何ですか?注文する?スクリプトファイル? sed

編集:@Paul_Pedantは正しいです。 sed行をVIに再貼り付けるのではなく、Windowsシステムにコピーすることを忘れました。手動で行を再入力した後、問題が解決しました!

答え1

shこれには配列への参照が含まれているため、実行可能なコードではありません。たぶんbashそうかもしれませんがksh、確かにそうではありませんsh

関連情報