Para adicionar , tudo o que você precisa é se livrar das cotações extras, por exemplo, alterar
CONVERTPATH="$(pwd $PATH)" "/" "$(basename $PATH)"
para
CONVERTPATH="$(pwd $PATH)/$(basename $PATH)"
Mas há alguns problemas:
-
pwd
não aceita argumentos; você pode usardirname
no caso apresentado. - o comando
read
não configuraráPATH
; renomeá-lo, por exemplo, paraname
- o comando
echo
está incompletamente citado
Com essas correções, você teria isto:
#!/bin/bash
read -e -p "Enter a path to a file: " name
CONVERTPATH="$(dirname $name)/$(basename $name)"
echo "Absolute path is $CONVERTPATH"
Ele não manipula o caso em que alguém responde ao prompt com uma variável. Além disso, o uso pretendido de pwd
provavelmente obteria o diretório absoluto. Você pode tentar isso por mais uma substituição
#!/bin/bash
read -e -p "Enter a path to a file: " name
head=$(dirname "$name")
head=$(cd "$head" && pwd)
CONVERTPATH="$head/$(basename $name)"
echo "Absolute path is $CONVERTPATH"
No entanto, ainda não fará o que você quiser . O problema (do seu ponto de vista) é que pwd
no OSX simplesmente ecoará o resultado baseado em seguir qualquer link simbólico do comando cd
. Esta não é apenas uma peculiaridade do OSX, mas um antigo comportamento do Unix que por exemplo permitiu que você cd
em um diretório no qual você não tinha permissão para fazer um pwd
apropriado seguindo a cadeia de ..
entradas.
Se você quiser um nome de caminho absoluto que não tenha nenhum link simbólico em seu resultado, precisará de uma abordagem diferente. O OSX tem realpath
- mas não no linha de comando. Em outros sistemas, você pode usar readlink -f
, mas não aqui.
Para discussão geral sobre este tópico: