私はバックグラウンドで常に実行される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
EDIT 私はただ運でこれを試してみました。
hhmm=$(/home/rpi-cecd/rpi-cecd)
case "$hhmm" in
45[:]00)
ok
;;
45[:]03)
left
;;
*)
echo "don't know how to process $hhmm"
;;
esac
と、少なくとも(両方で倍増し、角括弧を使用することをお勧めifとelifの中で同じ角括弧戦略を使用)。それは動作しますか? – Dilettant
問題の1つは、 '$?'は最後のコマンドの終了コード*です(通常は成功の場合は0、失敗の場合は負の数)。出力の結果は含まれません。 'grep'コマンドの出力が必要な場合は、それをキャプチャする必要があります。 –
'$?'は直前に実行されたcmdの返品ステータスです。常に整数であり、 '45:00'のようなものは含まれません。他にも多くの問題がありますが、最初のcmdを試して、出力をvar、ileに保存してください。 'hhmm = $(rpi-cecd ...)'。今度はそれを45 [:] 00のcase $ hhmmと比較してください)cmd1 ...; 45 [:] 03)cmd2 ... ;; *)echo "$ hhmmをどのように処理するか分からない" ;;エサック。がんばろう。 – shellter