busyboxでbashシェルスクリプトを実行すると、構文エラーが発生しました。
スクリプト
#!/bin/bash
for dev in `cat /proc/partitions | awk '{print $4}'`; do
if cmp -s <(head -c 2 /dev/$dev) <(echo -n -e '\x38\x6e')
then
echo "OK"
break
fi
done
エラーライン3
構文エラー: "("予期しない
答え1
Busyboxはbashをサポートしておらず、shに似た最小限のシェルしか持っていません。構文<()
はbash(および他の同様のシェル)にのみ適用されます。 POSIX sh、busybox sh、またはその他の最小シェルでは使用できません。そのため、対応するエラーが発生します。
busyboxh shで動作するようにスクリプトを取得するには、次のようにします。
match=$'\x38\x63'
for dev in $(awk '/[0-9]/{print $NF}' /proc/partitions); do
first=$(head -c 2 /dev/$dev)
if [ "$first" = "$match" ]
then
echo "OK"
break
fi
done