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:
-
pwdnão aceita argumentos; você pode usardirnameno caso apresentado. - o comando
readnão configuraráPATH; renomeá-lo, por exemplo, paraname - o comando
echoestá 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: