136 votes

Supprimer le slash à la fin d'une variable

l'achèvement automatique bash faire un / à la fin d'un répertoire comment je peux le dépouiller?

Merci pour les conseils.

 #!/bin/sh

target=$1

function backup(){
  date=`date "+%y%m%d_%H%M%S"`
  PWD=`pwd`
  path=$PWD/$target
  tar czf /tmp/$date$target.tar.gz $path
}

backup
 

246voto

martin clayton Points 41306

Utilisation

 target=${1%/}
 

Une référence

22voto

Gregory Pakosz Points 35546

Utilisez target=${1%/}

Voir cela la substitution de paramètre de ce guide de script bash pour plus.

15voto

amenzhinsky Points 357

Je pense qu'une meilleure solution pour canoniser les chemins est realpath $path ou avec l'option -m si elle n'existe pas. Cette solution supprime automatiquement les barres obliques inutiles et ajoute pwd

3voto

John P. Fisher Points 47

Attention, bash3 a ajouté regex similaire à perl à bash. Le guide mentionné couvre ceci ainsi que le guide officiel de GNU , mais toutes les références ne le font pas.

Ce que j'ai fait?

remplacer "2.19 / *" par "2.19"

Solution:

VER = "2.19 / foo-bar"

NEWVER = $ {VER% / *}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X