In Bash können Sie eine leere oder nicht definierte Variable mit diesem ersetzen:Zwei Bash-Substitutionen in einer Aussage?
${myvar:-replacement}
Sie können auch Teilstrings in Variablen wie folgt ersetzen:
${myvar//replace this/by this}
Jetzt möchte ich beide Substitutionen zu einem kombinieren: Wenn Variable ist undefiniert, setze sie auf replacement
, ansonsten ersetze einen Teil davon durch etwas anderes.
Ich kann dies in zwei Zeilen ohne Probleme schreiben.
myvar=${myvar:-replacement}
myvar=${myvar//replace this/by this}
oder enger an meine Geschäftslogik widerspiegeln:
if [[ -n "${myvar:-}" ]]; then
myvar="${myvar//replace this/by this}"
else
myvar="replacement"
fi
Gibt es eine Möglichkeit, beide Substitutionen in einer Aussage zu kombinieren/eine Zeile?
Ich habe dies versucht, ohne Erfolg:
myvar=${${myvar:-replacement}//replace this/by this} # bad substitution
ich set -u
in meine Skripte bin so, dass sie Fehler aus, wenn ich nicht definierten Variablen verwenden. Deshalb brauche ich das erste Sub auf undefined var.
dies nicht möglich ist in 'bash' AFAIK – Inian
Warum wir willst du immer Dinge in einer Zeile machen? Wenn es lesbar und nicht hässlich ist, lass es so wie es ist. – Maroun
@MarounMaroun Sie könnten Recht haben. Ich erkannte gerade, dass ich beide Aussagen in einer Zeile schreiben konnte, getrennt durch ein Leerzeichen. Nicht sicher, ob das es einfacher oder schwerer macht, es zu lesen. –