Gibt es ein inline-if mit Zuweisung (ternär bedingt) in bash? [Duplikat]

8

Wenn dies AS3 oder Java wäre, würde ich Folgendes tun:

%Vor%

Aber in der Shell scheint das unnötig kompliziert zu sein und erfordert mehrere Zeilen Code sowie ziemlich viel wiederholten Code.

%Vor%

Du könntest das Ganze in eine Zeile komprimieren, aber das opfert die Klarheit immens.

Gibt es eine bessere Möglichkeit, eine inline if mit Variablenzuweisung in der Shell zu schreiben?

    
IQAndreas 31.12.2012, 23:05
quelle

2 Antworten

9

Es gibt keinen bedingten Operator ?: in der Shell, aber Sie könnten den Code etwas weniger redundant machen:

%Vor%

Oder Sie könnten Ihre eigene Shell-Funktion schreiben, die wie der Operator ?: funktioniert:

%Vor%

obwohl das wahrscheinlich übertrieben ist (und alle drei Argumente bewertet).

Danke an Gordon Davisson für den Hinweis in Kommentaren, die in $(...) verschachtelt sind.

    
Keith Thompson 31.12.2012, 23:11
quelle
16

Schreiben Sie einfach:

%Vor%

Es ist nicht ganz dasselbe wie das, was Sie haben, da useDefault nicht überprüft wird. Stattdessen wird nur überprüft, ob customName gesetzt ist. Anstatt useDefault zu setzen, wenn Sie den Standardwert verwenden möchten, deaktivieren Sie einfach customName .

    
William Pursell 01.01.2013 00:06
quelle

Tags und Links