GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Affecter seulement une partie d'une chaîne à une variable dans Bash ?

Je reçois de l'utilisateur un certain chemin de fichier absolu et je souhaite créer une variable qui sera une chaîne qui n'inclura pas uniquement le FIRST deux composants du chemin du fichier, mais sans l'imprimer ou quoi que ce soit.

Par exemple, le chemin absolu pourrait être :

/home/myusername/folder1/folder2/folder3

Et il est enregistré dans "target_path", et je veux que "mydir" soit uniquement :

/folder1/folder2/folder3

J'ai essayé d'utiliser la commande couper de différentes manières mais sans succès.

Réponse acceptée :

Utilisation de la manipulation de chaîne de bash :

$ a=/home/myusername/folder1/folder2/folder3
$ echo "${a#/*/*/}"
folder1/folder2/folder3

Ainsi, la chaîne que vous voulez serait (en rajoutant la barre oblique) :

b="/${a#/*/*/}"

Pour une variable a , ${a#foo} supprimera la chaîne la plus courte correspondant à foo depuis le début de a . Ainsi, nous supprimons la chaîne la plus courte contenant trois / (y compris la barre oblique du début du chemin), pour supprimer les deux premiers composants du chemin absolu.


Ubuntu
  1. Script bash (I)

  2. Vue complète de l'endroit où la variable de chemin est définie dans Bash ?

  3. Comment autoriser uniquement certains caractères dans une variable bash ?

  4. Comment diviser une chaîne dans un script bash

  5. Alias ​​avec variable dans bash

Variable d'exportation bash

Chaînes de concaténation bash

Remplacement de chaîne dans Bash

Script Bash - Manipulation de chaînes

Comment définir une variable d'environnement dans Bash

Ajouter des dossiers à votre variable d'environnement Path ?