Preciso de uma função concisa e legível para ser usada no script bash que receberá como entrada:
- caminho absoluto (por exemplo, /home/user/tmp/data/sample1.txt )
- novo nome de arquivo (por exemplo, extended_sample.dat )
e retorno
caminho absoluto com novo nome de arquivo (por exemplo, /home/user/tmp/data/extended_sample.dat )
Agradeço antecipadamente!
Existem comandos 2+1 (bônus) que facilitam a vida ao lidar com nomes de caminhos:
dirname - remove o último componente do nome do arquivo
readlink - imprimir links simbólicos resolvidos ou nomes de arquivos canônicos
Então, para responder à sua pergunta:
Ou para alterar o nome do caminho do arquivo original:
Extraia a localização completa do script em execução (funciona se o script for executado em seu próprio arquivo):
Com esses 3 comandos, você pode fazer a maioria das manipulações de caminho facilmente.
Observe que a
return
instrução nas funções bash é usada para retornar um valor numérico como um código de status.Como pode parecer no caso mais simples:
O acima irá produzir:
Apenas brincando com
bash
namerefs:Resultado:
A
path_replace_file
função recebe um nome de variável como seu primeiro argumento. Na funçãopathvar
atua como um alias (uma referência de nome) para aquela variável.A função substitui a parte do nome do arquivo do valor de
$pathval
pelo que for fornecido como o segundo argumento da função.Isso requer
bash
4.3 ou posterior.Mudar
local -n
paratypeset -n
fará com que funcioneksh93
também.