Desde 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.
O, en pocas palabras, el patrón no se expande.
Una alternativa sencilla podría ser la siguiente
if [[ $(echo $d/lib*) != "$d/lib*" ]]; then
mv /etc/launchd.conf $d/launchd.conf
fi
Breve explicación de cómo funciona:
echo $d/lib*
se expande a una lista de archivos de la biblioteca si hay alguno presente, esta lista no es igual a $d/lib*
(que no se expande) por lo que el mv
se ejecuta
- Por otra parte, si no hay archivos de biblioteca, el eco devuelve la cadena
$d/lib*
El !=
se evalúa como falso y el mv
no se ejecuta