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} ]