In anderen Shells als zsh müssen Sie eine Zwischenzuweisung ausführen, wenn Sie mehrere Transformationen für einen Wert ausführen möchten.
Natürlich gibt es manchmal Problemumgehungen, z. B. das Ausführen eines Befehls, der das gewünschte Ergebnis ohne Nachbearbeitung erzielt, oder das Nachbearbeiten über ein Rohr über ein externes Tool (die Rohrlösung ist langsamer und birgt ein höheres Risiko, Zeilenumbrüche zu beschädigen).
Wenn Sie die Variable schreibgeschützt machen möchten, ist es möglicherweise sauberer, sie einer temporären Variablen zuzuweisen.
tmp=$(/bin/hostname)
typeset -r SHORT_HOST="${tmp%%.*}"
Zsh (aber nicht ksh oder bash) unterstützt verschachtelte Parametersubstitutionen. Dort kannst du schreiben
typeset -r SHORT_HOST=${$(/bin/hostname)%%.*}
Gilles 'SO - hör auf böse zu sein'
quelle