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