GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Assegnare solo una parte di una stringa a una variabile in Bash?

Ricevo dall'utente un certo percorso di file assoluto e voglio creare una variabile che sarà una stringa che non includerà solo il PRIMO due componenti del percorso del file, ma senza stamparlo o altro.

Ad esempio, il percorso assoluto potrebbe essere:

/home/myusername/folder1/folder2/folder3

Ed è salvato in "target_path" e voglio che "mydir" sia solo:

/folder1/folder2/folder3

Ho provato a usare il comando cut in diversi modi ma senza successo.

Risposta accettata:

Usando la manipolazione delle stringhe di bash:

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

Quindi, la stringa che desideri sarebbe (aggiungendo nuovamente la barra iniziale):

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

Per una variabile a , ${a#foo} rimuoverà la stringa più corta che corrisponde a foo dall'inizio di a . Quindi, rimuoviamo la stringa più breve contenente tre / (compresa la barra iniziale nel percorso), per rimuovere i primi due componenti del percorso assoluto.


Ubuntu
  1. Come dividere una stringa nello script Bash

  2. Alias ​​con variabile in bash

  3. Ciclo degli elementi di una variabile di percorso in Bash

  4. Converti una stringa di testo in bash in array

  5. Cosa fa 'bash -c'?

Variabile di esportazione Bash

Bash concatena le stringhe

Sostituzione di String in Bash

Bash Scripting – Manipolazione di stringhe

Come impostare la variabile d'ambiente in Bash

Aggiunta di cartelle alla variabile di ambiente del percorso?