Da man bash
[[ expression ]]
Return a status of 0 or 1 depending on the evaluation of the conditional
expression expression. Expressions are composed of the primaries
described below under CONDITIONAL EXPRESSIONS. Word splitting and pathname
expansion are not performed on the words between the [[ and ]]; tilde
expansion, parameter and variable expansion, arithmetic expansion, command
substitution, process substitution, and quote removal are performed.
Conditional operators such as -f must be unquoted to be recognized as primaries.
In breve, il modello non è espanso.
Una semplice alternativa potrebbe sembrare
if [[ $(echo $d/lib*) != "$d/lib*" ]]; then
mv /etc/launchd.conf $d/launchd.conf
fi
Breve spiegazione su come funziona:
-
echo $d/lib*
si espande in un elenco di file di libreria, se presenti, questo elenco non è uguale a $d/lib*
(che non viene espanso) quindi viene eseguito mv
- OTOH se non sono presenti file di libreria, l'eco restituisce la stringa
$d/lib*
, !=
restituisce false e mv
non viene eseguito