Use uma barra
THEDIR="${1%/*}"
Mais lento, mas mais fácil de lembrar é dirname
.
Eu pesquisei no site e já vi perguntas semelhantes, mas não consegui fazê-las funcionar. Tentei seguir: Dividindo uma string até um local específico mas não funcionou. Eu trabalho com o Korn.
Eu quero principalmente que o diretório de um arquivo seja passado. Então o arquivo seria:
/home/me/working/from/here/howareyou.txt
Então eu quero começar:
/home/me/working/from/here/
Eu tentei isso, mas não funcionou:
THEDIR="${1%//*}"
Mas apenas cuspiu todo o parâmetro. Qualquer ajuda seria apreciada. Obrigado.
Eu gosto de usar o corte, em associação com o rev. Basicamente, você canaliza o caminho completo do arquivo para rev, para inverter o nome da string. Então, você canaliza para cortar, com um "-" após o número do campo que você quer, e então, você o inverte novamente.
Isso resulta em algo assim:
echo "$name" | rev | cut -d'/' -f2- | rev
Se você ainda não sabe, corte a string em torno de um caractere delimitador, indicado por -d, e selecione o campo desejado, indicado por -f (passando-o 2 significando que você deseja a segunda parte do caractere string), adicionando um caractere minus que quer que você queira até o final da string (não usar menos interromperia a string na próxima ocorrência do delimitador)