Ble.sh: [更新] ble-update(1)を実行する際にfailglobを(一旦)無効にする

Created on 15 Feb 2019  ·  5Comments  ·  Source: akinomyoga/ble.sh

Version of ble.sh: 0.3.0-alpha1+15245d5
Version of GNU Bash: 5.0.2(1)-release

コマンドble-updateが実行された時に,failglobオプションが有効になっていると,[ble: reload]の後の幾つかの設定において「-bash: 一致しません: XXX」というエラーが起きるようです(なお,ble-update(1)自体は成功します; 終了ステータスは0です)。例えば変数値ble_util_idle_elapsedの比較で用いられている3項演算子?や,変数$LS_COLORSに格納されている文字*が引っ掛かります。ble-update(1)を実行する際にはfailglobオプションを無効にしたほうが良いように思います。

bug

All 5 comments

ありがとうございます。こちらでも再現しました…どうも ble-update の時だけの問題ではなくて bleopt 周りでクォートを忘れている気がします… (ble_util_idle_elapsed が登場するのは bleopt idle_interval= ですし、LS_COLORSble.sh は本体には直接登場せずユーザ設定で bleopt filename_ls_colors="$LS_COLORS" とした時に現れる物なので)。調べてみます

  • 64cdcba 直しました。: ${var:=...} というイディオムがありますが、これって shopt -s failglob だとまずいですね…

ありがとうございます!

: ${var:=...} というイディオム

そうですね……。failglob関連は面倒ですよね……。
個人的に,「グロブパターンにマッチしたら展開・マッチしなければそのままグロブ文字が残る」という挙動が対話的に起こるのが気持ち悪いので,failglobを有効にしているんですが,grep(1)に指定する正則表現を書くときなどに一々引用符で囲わなくてはならず,デメリットのほうが大きい気がしてきました(笑)

そうですね。。改めて考えてみると、逆に自分の場合にはグロブパターンでない ?*[ などは必ずクォートするので (grep の時も含めて)、基本的に failglob にしても良いのかもしれないと思い始めて来たのでした…。暫く failglob にしてみることにします… (akinomyoga/mshex@8031b44)。

閉じ忘れていました。閉じますね

Was this page helpful?
0 / 5 - 0 ratings