Suponha que a variável a armazena um nome de caminho (a="whatever")
1. Para o caminho que contém espaço em potencial:
c=$(grep -o " " <<< $a | wc -l); if (( $c > "0" )); then a=$(sed 's/ /\ /g' <<< $a); fi
2. Para a pergunta real, ou seja, converter caminho para absoluto: readlink pode recuperar o conteúdo das ligações simbólicas, que podem ser empregadas da seguinte maneira. (note readlink -f
teria sido perfeito, mas não está disponível no mínimo no bas do Mac OS X, em que -f significa FORMATOS .)
if [[ $(readlink $a) == "" ]]; then a=$(cd $a; pwd); else a=$(cd $(readlink $a); pwd); fi
3. Apenas aprendemos pwd -P
em man pwd
: -P é para " Exibir o diretório de trabalho atual físico (todos os links simbólicos resolvidos) " e, portanto
if (( $(grep -o " " <<< $a | wc -l) > "0" )); then a=$(sed 's/ /\ /g' <<< $a); fi; a=$(cd $a; pwd -P)
funcionará também.
Conclusão: combine 1 com 2 para atender às suas necessidades, enquanto os nomes de caminho que contêm espaço já são atendidos no mais conciso 3 .