Por que isso produz _results=""
...
_results="$( grep ${_gopts[@]} )"
E isso produz os _results desejados (lista de entradas SSHFS no fstab) ...
_results="$( eval grep ${_gopts[@]} )"
A matriz _gopts é idêntica em ambos os casos e consiste em...
declare -p _gopts
declare -a _gopts=([0]="--extended-regexp" [1]="--with-filename" [2]="--recursive" [3]="--include" [4]="fstab" [5]="'^[^#]*sshfs#'" [6]="/etc")
Por causa das aspas extras em torno do 5º elemento (o regexp:
[5]="'^[^#]*sshfs#'"
).O comando grep receberá um argumento da forma
'^regex'
em vez de^regex
, que não corresponderá, nunca (não há comoregex
seguir uma aspa simples e começar no início da linha, ao mesmo tempo).Remova-os e, em seguida, cite a expansão da matriz (
"${_gopts[@]}"
em vez de${_gopts[@]}
):Você também pode querer usar aspas simples em vez de aspas duplas na declaração do array: aspas duplas não são necessárias, pois nenhum elemento contém variáveis e outras expansões.