Extrahieren Sie einen bestimmten Text aus einer Variablen in einem Shell-Skript

Extrahieren Sie einen bestimmten Text aus einer Variablen in einem Shell-Skript

Ich habe 2 Variablen

VAL1="C70AN"
VAL2="MBA30"

und ich habe ein Verzeichnis in meinem System/opt/web/C70/MBA/

Wie kann ich mithilfe von Variablen in dieses Verzeichnis gelangen?

Zum Beispielcd /opt/web/$VAL1/$VAL2

Wie kann ich den bestimmten Text aus der Variable im Shell-Skript extrahieren?

Antwort1

Die Antwort von @Anthon ist vollkommen richtig, obwohl sie meiner Meinung nach etwas zu viel Tipparbeit bedeutet. Ich schlage vor, eine Shell-Funktion (Bash) mit dem Namen (z. B.) „mycd“ als Wrapper zu definieren:

function mycd {
  cd /opt/web/${VAL1:0:3}/${VAL2:0:3}
}

Unabhängig davon, welche Werte die Variablen $VAR1 und $VAR1 derzeit haben, wird durch den Aufruf dieser Funktion das Verzeichnis an den erwarteten Speicherort geändert.

Versuchen Sie das folgende Beispiel in einem laufenden Bash-Terminal und drücken Sie am Ende jedes Eingabezeilenfensters die Eingabetaste):

user% cd; pwd
/home/user
user% function mycd { cd /opt/web/${VAL1:0:3}/${VAL2:0:3} }
user% export VAL1="C70AN"; export VAL2="MBA30"
user% mycd
user% pwd
/opt/web/C70/MBA
user%

Dieses Beispiel setzt natürlich voraus, dass der Verzeichnisbaum "/opt/web/C70/MBA" existiert. Ist dies nicht der Fall, erhalten Sie eine Fehlermeldung wie

bash: cd: /opt/web/C70/MBA: file or directory not found

Dieses Ergebnis ist dennoch ein Beweis für die korrekte Arbeit der „mycd“-Funktion, da diese versucht in das berechnete – (noch) nicht existierende – Verzeichnis zu wechseln.

HTH auch

verwandte Informationen