シェルスクリプトのデバッグ中にこのエラーが発生しました。私のスクリプトで何が起こっているのかわかりません。
#!/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
。