Bash 스크립트 오류: 정수 표현식이 필요합니다.

Bash 스크립트 오류: 정수 표현식이 필요합니다.

Raspberry Pi에서 bash 스크립트를 사용하는 데 문제가 있습니다.

x='gpio -g read 22'

if [ $x -ge 1 ]
then
gpio -g write 23 1
fi

오류는 입니다 integer expression expected. 왜?

답변1

gpio -g read 22문자열이 1보다 큰지 확인하기 때문입니다 . gpio -g read 22숫자가 아니기 때문에 오류가 발생합니다.

무엇을 하고 싶은지 설명하지 않았지만 비교하고 싶은 것 같아요산출명령했다 gpio. 이렇게 하려면 명령을 $()백틱( ``) 으로 묶어야 합니다 .

x=$(gpio -g read 22)

if [ "$x" -ge 1 ]
then
   gpio -g write 23 1
fi

또는 더 간단하게는 다음과 같습니다.

[ "$(gpio -g read 22)" -ge 1 ] && gpio -g write 23 1

작업이 foo='command'실행되고 있지 않습니다 command. 변수는 foo값을 갖는다 command그것의 출력보다는.

답변2

위의 답변은 대부분의 경우 작동하지만 다음 스크립트를 사용하면 됩니다.

#!/bin/bash

a='foo: '
b='44494949494'

if [ ${a} -eq ${b} ]
then
   echo "a matches b"
else
   echo "a is different than b"
fi

위의 선택 사항 중 하나에 명시적으로 응답하는 대신 다음을 수행합니다.

./test.sh: line 6: [: foo:: integer expression expected
a is different than b

스크립트가 예상대로 작동하려면(예: 값을 문자열로 비교) 비교를 다음과 같이 변경해야 합니다.

if [ ${a} = ${b} ]

관련 정보