1

これを1行に減らしたい:

item=${_menu_sel_value/M--/}
item=${item/-M-/}
item=${item/D--/}
item=${item/-D-/}
item=${item/??-/}

こちらがテストサンプルです。ユーザーがシェル メニューから次のいずれかを選択すると、その選択が上記の bash スクリプト コードに渡されます (したがって、可能性の 1 つだけに一致する必要があります)。

 -D-branch.sh
 M--cfg/aliases.cfg
 -M-functions/0300.menu.sh
 M--git_aliases.sh
 ??-add.sh

出来ますか?

私は次のようなものを試しました:

item=${_menu_sel_value/^[M\-]/}

しかし、うまくいきませんでした。

4

2 に答える 2

2

これがあなたが探しているものだと思います。

shopt -s extglob
item=${_menu_sel_value/@(M--|-M-|D--|-D-|\?\?-)/}

パターンは、 、、または@(a|b|c)のいずれかに一致します。をエスケープする必要があることに注意してください。これは、パターン内の任意の 1 文字に一致するワイルドカードであるためです。abc?

于 2013-05-01T18:09:25.117 に答える