Variável de corte em bash [duplicado]

Sep 19 2020

Preciso cortar a variável wordpress.tar.gzpara wordpress.

Eu tentei:

#!/bin/bash
dir=wordpress.tar.gz
echo $dir RELEASE=$($dir | sed "s/-.tar.gz//") echo ${RELEASE}

Respostas

2 WiktorStribiżew Sep 19 2020 at 20:43

Você pode usar a expansão de string:

RELEASE="${dir%%.*}"

Veja a demonstração online do Bash :

dir=wordpress.tar.gz
RELEASE="${dir%%.*}"
echo "$RELEASE"
# => wordpress

A ${dir%%.*}parte remove a maior parte do texto do final (devido a %%) até o primeiro caractere de ponto.

Se quiser usar sed, você pode remover toda a string começando com (e incluindo) o primeiro ponto:

RELEASE="$(sed 's/\..*//' <<< $dir)"

Aqui, \..*corresponde a um ponto e depois a qualquer zero ou mais caracteres no final da string, e a correspondência é substituída por uma string vazia (é removida), pois o RHS está vazio.

1 MichaelO. Sep 19 2020 at 20:42
RELEASE=$(echo $dir | sed "s/\.tar\.gz//")