Qtopia Shell Bridge Dialog その8 問題解決?(^^;)

 あれから、さらに悪戦苦闘した結果、


grep "dame" $MSG_FILE | sed -e 's/^.*=//' > $OUTPUT
だと、通ることが判明(^^;)。
 うーむ、基本的には昨日の

echo "`grep "dame" $MSG_FILE | sed -e 's/^.*\=//'`" > $OUTPUT
とやってるコトは同じハズなんですけどね。
 違いがあるとすれば、echoを使って最終出力するか、grep | sed の抽出結果をそのまま垂れ流しにするか?くらいのモンだと思うんですが。
 こうなると、悪さしてるのは echoコマンドの方かもしれません(苦笑)。

 って、ことで昨日のソースを若干修正。


# Qdame2.sh
#!/bin/sh

export QSHDLG_APP=Qdame
INPUT=/var/spool/qshdlg/input_${QSHDLG_APP}
OUTPUT=/var/spool/qshdlg/output_${QSHDLG_APP}
CONTROL=/var/spool/qshdlg/control_${QSHDLG_APP}

MSG_FILE="/home/zaurus/work/test.lang"

qshdlg -t "QDame" -c utf8 custom &

while [ ! -p ${CONTROL} ]
do
:
done

# PATTERN 5 (別ファイルから CONTROL経由 [echo無し])
grep "ABC" $MSG_FILE | sed -e 's/^.*=/description(QString) /' > $CONTROL #P5-1
grep "ok" $MSG_FILE | sed -e 's/^.*=/description(QString) /' > $CONTROL #P5-2
grep "dame" $MSG_FILE | sed -e 's/^.*=/description(QString) /' > $CONTROL #P5-3

# PATTERN 6 (別ファイルから 直接OUTPUTへ [echo無し])
grep "ABC" $MSG_FILE | sed -e 's/^.*=//' > $OUTPUT #P6-1
grep "ok" $MSG_FILE | sed -e 's/^.*=//' > $OUTPUT #P6-2
grep "dame" $MSG_FILE | sed -e 's/^.*=//' > $OUTPUT #P6-3

echo 'showMessage()' > $CONTROL
echo 'show()' > $CONTROL

実行結果

 基本的には、昨日のソースと同一のものなんで、パターン1〜4については省略してます。
 ってことで、こうすると問題無く UTF8な文字列と、半角スペースを表示することが出来ます。

 問題があるとすれば、echo を使わない以上、echo -e "ああ\nああ"とかで、行中に改行コードを含めることが出来ません。なので、OUTPUTへ書き出す際でも、description(QString)を使って書き出す時のように、一行一行に分割してやらないといけないってことですか。

 sedで置換する際に、改行コード打ち込んでやれれば良いかな?とも思うんですが、なんかこれがどうも上手くいかないんですよね。

 むーん。