長南です。 よしのぶさんのメールより [vine-users:082526] > > Vine 4.2(bc-1.06-18vl3)上で作成した数値計算のシェルスクリプトを > Vine 6.2(bc-1.06.95-1vl6)で動かしてみたところ、まともに動きません。 > いろいろ調べてみたところbcの出力にゴミがついているようです。 > > 下記のスクリプトで計算させるとbashの算術展開とbcの計算結果は、echoの > 出力上は同一(真)に見えますが、bcの出力には > 5b1b 313f 3330 6834 (0x1B[?1034h) > が前置されているため、testはBAD(偽)になってしまいます。... > $ ./bc_err.sh 27 "*" 3 > 81 = 81 > 3138 > 5b1b 313f 3330 6834 3138 > BAD > > #!/bin/sh > r1=$(($1 $2 $3)) > r2=`echo -n "$1 $2 $3" |bc -iq` > echo $r1 = $r2 > echo -n $r1 |od -h -A n > echo -n $r2 |od -h -A n > if [ "$r1" = "$r2" ];then > echo O.K. > else > echo BAD > fi 興味深い話なので、Google で 1034h を調べてみました。 こんな記事が見つかりました。 http://www.incenp.org/notes/2012/python-term-smm-fix.html http://reinout.vanrees.org/weblog/2009/08/14/readline-invisible-character-hack.html http://teckmemo.seesaa.net/archives/201302-1.html > で、このゴミの原因なのですが、bcだけの問題ではなく、実行する端末も > 関係するようで、下記スクリプトをVine 6.2のConsole上で実行すると、 > 前置のゴミは付加されず、BAD(偽)になりません(Vine 6.2のX上の端末、 > gnome-terminal, xterm, uxtermなどではBAD(偽)になります)。 Vine 6.2 と Vine 4.2 の xterm で比較してみました。 Vine 6.2 ではこんなふうになります。 $ infocmp xterm |grep 1034h smir=\E[4h, smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m, Vine 4.2 では smm の項がありません $ infocmp xterm |grep 1034h $ それで、4.2 では使えたものが、6.2 で使えなくなったのですね。 xterm の terminfo から、smm を削除するのは、何か副作用があるのでしょうか。 -- 長南洋一 _______________________________________________ vine-users mailing list vine-users@xxxxxxxxxxxxxxxxxxxx http://listserv.linux.or.jp/mailman/listinfo/vine-users