메신저 백그라운드에서 지속적으로 실행되는 BASH 스크립트를 만들려고합니다. 이 bash 스크립트는 rpi-cecd 명령의 결과를 요청하고 45:00을 포함하는 경우 무언가를 수행하고 45:03이 포함 된 경우 다른 작업을 수행합니다. 그러나 지금은 두 가지 이상의 결과를 요구할 경우 스크립트가 작동하지 않습니다.BASH | 명령이 뭔가 같으면, 뭔가 다른 일을한다면
작업 코드,하지만 45:00
/home/rpi-cecd/rpi-cecd | grep -q "45:00" && ok
내가 노력
코드를 요구하지만, 전혀 작동하지 않았다.
/home/rpi-cecd/rpi-cecd | grep '45' > /dev/null
if [[ $? =~ .*45:00.* ]]
then
echo "OK Button Clicked - HMS"
ok
elif [ $? == *"45:03"* ]
then
echo "Left Button Clicked - Canteen"
left
else
echo "Nothing Clicked?"
fi
편집 난 그냥 행운과 함께이 시도.
hhmm=$(/home/rpi-cecd/rpi-cecd)
case "$hhmm" in
45[:]00)
ok
;;
45[:]03)
left
;;
*)
echo "don't know how to process $hhmm"
;;
esac
@Someprogrammerdude는 제안과 (모두 배 대괄호를 사용하는 것이 좋습니다 경우 및 ELIF 적어도 같은 대괄호 전략을 사용할 때). 작동합니까? – Dilettant
하나의 문제는'$?'가 마지막 명령의 종료 코드 * (보통 성공의 경우 0, 실패의 경우 음수가 아님)입니다. 출력 결과를 포함하지 않습니다. 'grep' 명령으로 출력이 필요하면 그것을 캡처해야합니다. –
'$?'는 가장 최근에 실행 된 cmd의 반환 상태입니다. 항상 정수이며, '45 : 00'과 같은 것은 포함하지 않습니다. 여기에 다른 많은 문제가 있습니다. 그러나 첫 번째 cmd를 시도해보고 출력을 var, ile로 저장하십시오. 'hhmm = $ (rpi-cecd ...)'. 이제는 45 [:] 00에서 whit'$ hhmm "을 비교하십시오.) cmd1 ...; 45 [:] 03) cmd2 ... ;; *) echo "$ hhmm을 처리하는 방법을 모른다";; esac'. 행운을 빕니다. – shellter