Eventuali duplicati:
Ternary operator (?:) in BashC'è un inline-if con assegnazione (condizionale ternario) in bash?
Se questo fosse AS3 o Java, vorrei fare le seguenti operazioni:
fileName = dirName + "/" + (useDefault ? defaultName : customName) + ".txt";
Ma in guscio, che sembra inutilmente complicato, che richiede diverse righe di codice, oltre a un bel po 'di codice ripetuto.
if [ $useDefault ]; then
fileName="$dirName/$defaultName.txt"
else
fileName="$dirName/$customName.txt"
fi
Si può comprimere tutto in una sola riga, ma questo sacrifica immensamente la chiarezza.
C'è un modo migliore di scrivere un in linea if
con assegnazione variabile nella shell?
La risposta di William Purcell è meno diretta della mia, ma se l'ipotesi che "$ useDefault" controlli se utilizzare il nome predefinito o meno, potrebbe essere una soluzione più pulita. –
Ho aggiornato la mia risposta per citare tutto correttamente. –