Você quer passar esses elementos da matriz como argumentos para find
:
TESTP=(-path './var/*')
find . "${TESTP[@]}"
Ou crie uma linha de comando shell e peça ao shell para interpretá-lo (e as aspas nele):
TESTP='-path "./var/*"'
eval "find . $TESTP"
Ou você pode usar o operador split + glob (que você usou inadequadamente deixando sua variável sem aspas na pergunta) em uma variável escalar:
TESTP='-path,./var/*'
set -f # no glob
IFS=, # split on ,
find . $TESTP
Na sua,
TESTP=( "-path" "\"./var/*\"")
find ${TESTP[@]}
${TESTP[@]}
é expandido primeiro para o elemento da matriz ( -path
e "./var/*"
), e então cada um está sujeito ao operador split + glob (como você esqueceu de citar), então com o valor padrão de $IFS
, eles não seriam divididos, mas como o segundo contém um caractere curinga, ele pode ser expandido para os arquivos cujo nome termina em "
no diretório "./var
.
O mais provável é que não exista nenhum diretório ".
, então ambos os argumentos são deixados como está e passados para find
. E isso seria o mesmo que
find -path '"./var/*"'
Ou seja, procurando por arquivos abaixo do diretório "./var
que terminam em um caractere "
.