Hallo,
ich manipuliere Variablen mit den bash-Kürzeln
1 2 3 4 | file=Blah.TxT ext=${file##*.} #Dateiendung extrahieren ext_l=${ext,,} #in kleinbuchstaben echo ext_l |
kann man das auch irgendwie kombinieren (ohne zwischenvariable)?
Gruß Frank
Anmeldungsdatum: Beiträge: 419 |
Hallo, ich manipuliere Variablen mit den bash-Kürzeln
kann man das auch irgendwie kombinieren (ohne zwischenvariable)? Gruß Frank |
||||
Anmeldungsdatum: Beiträge: 170 |
Hi, einen Weg, zwei verschiedene Expansion auf einmal zu nutzen, gibt es meines Wissens nicht in der Bash. Du kannst aber auf die neuen Namen verzichten: file=Blah.TxT file="${file##*.}" file="${file,,}" echo "$file" #da fehlte bei dir natürlich das $ HTH |
||||
![]() Anmeldungsdatum: Beiträge: 921 Wohnort: /home |
Nein, weil du ja den Inhalt der Variable File an die Variable ext mit mit den Parametern weiter an die Variable ext_l übergibst. Außerdem ist es besser lesbar und nachvollziehbar. Ist diese Variante machbar? Der Schreibaufwand bleibt aber der gleiche, trotz verkürzter Zeile
edit: hmm... mir fällt gerade auf, das es so gar nicht funktionieren kann. file muss ja an die Variablen ext übergeben werden. Logischerweise müssen die Parameter komplett an eine Variablen übergeben werden Keine Ahnung ob diese Syntax gültig ist. Aber es ist eine Richtung wenn es doch möglich ist.
|
||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 419 |
ein Syntaxfehler kommt nicht, aber es wird weder die dateiendung extrahiert noch in kleinbuchstaben umgewandelt.es wäre aber das, was ich irgendwie erreichen will. Gruß Frank |
||||
![]() Anmeldungsdatum: Beiträge: 7174 Wohnort: Wolfen (S-A) |
Nein. ext_l=${file##*.,,} #Dateiendung extrahieren und in kleinbuchstaben Eben. Es bleibt am Ende doch bei den 2 Schritten, wie Du sie oben gemacht hast. (sorry, ist so) LG, track |
||||
![]() Anmeldungsdatum: Beiträge: 921 Wohnort: /home |
nun, ja, das abe ich mitbekommen nachdem ich diese fixe Idee hatte und es gleich mal selber getestet habe. In wie weit du in Bash einen eigenen Algorithmus basteln kannst, weiß ich nicht, sofern könntest du mit Speedcoding ein paar Zeilen sparen was aber relativ ist da du die Zeile im Algorithmus definieren oder einbinden musst. Bei dem Dreizeiler macht es eigentlich keinen großen Sinn |
||||
![]() Anmeldungsdatum: Beiträge: 1570 Wohnort: Terra incognita |
Mein Vorschlag: file=Blah.TxT ext="${file##*.}" && ext="${ext,,}" # zumindest in einer Zeile und nur eine Variable echo "${ext}" "" - falls im Extension Leerzeichen sind ☺ . TausB |