Posso usar modificadores de histórico bash com variáveis em scripts?

2

Seria útil se eu pudesse usar modificadores de histórico bash em scripts como:

!$:h para obter o caminho de um arquivo.

Existe uma maneira de usá-los em scripts? Por exemplo, ${1:h}

    
por user1371264 24.04.2018 / 15:57

1 resposta

2

Esses modificadores de histórico também podem ser aplicados a variáveis em csh de onde o recurso vem.

Mas bash optou por não copiar essa parte. zsh fez embora. Então você pode usar zsh em vez de bash aqui:

$ file=foo/bar/
$ echo $file:h # (or ${file:h})
foo

(o exemplo escolhido para mostrar que zsh realmente melhorou em csh , o que teria retornado foo/bar ; ele também suporta alguns modificadores úteis adicionais).

Em outros shells, você sempre pode usar dirname :

$ dir=$(dirname -- "$file")
$ echo "$dir"
foo

(embora tenha cuidado, não funciona corretamente para nomes de diretório que terminam em caracteres de nova linha).

Em bash , como em outros POSIX shells, você pode usar ${file%/*} , mas ele gera resultados inesperados em alguns casos como foo/bar/ ou foo ou / .

    
por 24.04.2018 / 16:37