wyrażenie regularne w wyrażeniu bash

Mam 2 pytania dotyczące wyrażenia regularnego w wyrażeniu bash.

1. tryb nie chciwy

local temp_input='"a1b", "d" , "45"'
if [[ $temp_input =~ \".*?\" ]]
then
    echo ${BASH_REMATCH[0]}
fi

Wynik to

"a1b", "d" , "45"

W Javie

String str = "\"a1b\", \"d\" , \"45\"";
Matcher m = Pattern.compile("\".*?\"").matcher(str);
while (m.find()) {
    System.out.println(m.group());
}

Mogę uzyskać wynik poniżej.

"a1b"
"d"
"45"

Ale w jaki sposób mogę używać trybu bez chciwości w bashu?
Mogę zrozumieć, dlaczego\" Prace.
Ale nie rozumiem dlaczego.?\" nie działa.

2. mecze globalne

local temp_input='abcba'
if [[ $temp_input =~ b ]]
then
    #I wanna echo 2 b here. 
    #How can I set the global flag?
fi

Jak mogę zdobyć wszystkie mecze?
ps: Chcę tylko używać wyrażenia regularnego.

Na drugie pytanie, przepraszam za mylące.
Chcę echo „b” i „b”, nie liczyć „b”.

Wsparcie!

questionAnswers(3)

yourAnswerToTheQuestion