Estou bastante confuso sobre em que circunstâncias eu preciso escapar metacaracteres em nomes de caminho. Considere o seguinte exemplo:
Estou no seguinte diretório de trabalho:
$ echo $PWD
/home/helpermethod/foo[b]ar/foo/bar
Agora quero retirar tudo por trás de foo[b]ar
. Estou usando a substituição de parâmetro para executar esta tarefa: / home / helpermethod / foo [b] ar
$ path=$PWD
$ basename=foo[b]ar
$ stripped_path=${path%$basename/*}/$basename
Isso parece não funcionar porque a string de nome da base precisa ser escapada adequadamente:
$ basename=foo\[b\]ar
$ stripped_path=${path%$basename/*}/$basename
Ok, agora eu tenho o stripped_path
que eu estava procurando
$ echo "$stripped_path"
/home/helpermethod/foo[b]ar
Mas se eu testar agora se esse for um diretório válido
$ [[ -d $stripped_path ]]
o comando test
sempre retorna falso (ou seja, um valor de retorno! = 0). Qual é o problema aqui? Preciso anuviar o stripped_path
?