busybox에서 bash 쉘 스크립트를 실행할 때 구문 오류가 발생했습니다.

busybox에서 bash 쉘 스크립트를 실행할 때 구문 오류가 발생했습니다.

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

관련 정보