Trim variable dans bash [duplicate]

Sep 19 2020

Je dois ajuster la variable wordpress.tar.gzà wordpress.

J'ai essayé:

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

Réponses

2 WiktorStribiżew Sep 19 2020 at 20:43

Vous pouvez utiliser l'expansion de chaîne:

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

Voir la démo en ligne de Bash :

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

La ${dir%%.*}partie supprime le plus long morceau de texte de la fin (en raison de %%) jusqu'au premier caractère de point.

Si vous souhaitez utiliser sed, vous pouvez supprimer toute la chaîne commençant par (et y compris) le premier point:

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

Ici, \..*correspond un point, puis tout zéro ou plusieurs caractères à la fin de la chaîne, et la correspondance est remplacée par une chaîne vide (est supprimée) car le RHS est vide.

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