Não é realmente bagunçar a globbing . Aqui, usando $POSTMAP
sem aspas, você está usando o operador split + glob.
Com o valor padrão de $IFS
, no seu /work/Documents/Projects/untitled\ folder/untitled\ folder/*/*_tsta.bam
, ele será dividido primeiro em "/work/Documents/Projects/untitled\"
, "folder/untitled\"
e "folder/*/*_tsta.bam"
. Apenas o terceiro contém caracteres curinga e, portanto, está sujeito à parte glob. No entanto, o glob apenas procuraria por arquivos no diretório folder
relativo ao diretório atual.
Se você deseja apenas a parte glob
e não o operador split
desse split+glob
, defina $IFS
como a string vazia. Para esse operador, a barra invertida não pode ser usada para escapar de $IFS
separadores (com bash
(e bash
apenas entre shells parecidos com Bourne), ele pode ser usado para escapar de glob globals embora).
Então:
POSTMAP="/work/Documents/Projects/untitled folder/untitled folder/*/*_tsta.bam"
IFS= # don't split
set +f # do glob
for file0 in $POSTMAP # invoke the split+glob operator
do...
Ou provavelmente melhor com shells compatíveis com matrizes como bash
, yash
, zsh
, ksh
:
postmap=(
'/work/Documents/Projects/untitled folder/untitled folder/'*/*_tsta.bam
) # expand the glob at the time of that array assignment
for file0 in "${postmap[@]}" # loop over the array elements
do....