임베디드 디바이스 중 하나에서 busybox로 작성된 쉘 스크립트를 얻으려고합니다. 문제의 원인이되는 줄은 아래에 있으며 쉘에 -x 플래그를 사용하여 실행 한 결과가 포함되어 있습니다.이 쉘 명령어의 문제점
if [ cut -d : -f 1-3 /sys/class/net/eth0/address | grep -q -i 01:02:03 ]; then
# Do stuff
fi
를 실행하려고 할 때 주어진 출력 : 내가 원래 작동을 중지 할 때 나도 몰라 그래서 스크립트를 작성하지 않은
# sh -x ./script
+ [ cut -d : -f 1-3 /sys/class/net/eth0/address
sh: missing ]
+ grep -q -i 01:02:03 ]
grep: ]: No such file or directory
+ sync
. 그것은 비교에 사용되는 명령 (맥 주소 접두사가 주어진 샘플과 일치한다면 1을, 그렇지 않으면 0을 반환해야 함)가 제대로 실행되지 않는 것 같지만 명령을 분리하려고하는 이유를 모르겠습니다. .
'if'조건이 절대로 작동하지 않았을 것입니다. 'cut '자체는 명령이며'['명령을위한 옵션이 아닙니다. 명령 파이프 라인을'if'의 조건으로 사용하려면 대괄호를 버리십시오. 그리고 비 비지 박스 시스템에서, 더 많은 지혜를위한'남자 테스트 '. – ghoti