Ich frage mich, ob es möglich ist, die letzten vier Zeilen im folgenden Beispiel zu reduzieren:bash: Entfernen leerer Parameter
#!/bin/bash
function xxx {
echo $#
echo $1
}
[[ -n $SOME_ENV ]] && P="-Dabc=$SOME_ENV"
if [[ -n $P ]]; then
xxx "$P" abc
else
xxx abc
fi
Ersetzen des if-else-Fi von nur
xxx "$P" abc
funktioniert, wenn $ P ist nicht leer, sonst nicht, weil "" immer noch als leerer Parameter gilt. Das Weglassen der Anführungszeichen um $ P funktioniert nicht, wenn SOME_ENV Leerzeichen enthält. Ich weiß, dass es mit "eval" möglich ist, aber eval ist böse: http://mywiki.wooledge.org/BashFAQ/048
Jede andere Lösung?
Ihre Lösung ist perfekt, wenn man die letzten 4 Zeilen behalten würde. Aber ich möchte es loswerden. Ich möchte nur eine Zeile haben, die mit "xxx" beginnt. Das reale Beispiel enthält viel mehr als nur ein gewöhnliches "ABC". Ich möchte diese Redundanz vermeiden. – Henning