Qui "${HOME:=}"
è un più o meno un non-operativo, poiché restituisce $ HOME se è impostato e nulla se non lo è.
if [ "${HOME:=}" != "" ] && [ -d ${HOME} ]
Questo funzionerebbe in modo identico:
if [ "${HOME}" != "" ] && [ -d ${HOME} ]
Se tu avessi qualcosa dopo il segno di uguale, la prima parte del if
sarebbe sempre vero.
if [ "${HOME:=here}" != "" ] && [ -d ${HOME} ]
qualsiasi cosa succeda, otterresti sempre una stringa che non è uguale a "".
Tuttavia, questo potrebbe dipendere dal fatto che $ HOME e $ DI DEFAULT erano entrambi nulli:
if [ "${HOME:=$DEFAULT}" != "" ] && [ -d ${HOME} ]
fonte
2009-06-30 16:31:37
mi ha battuto di un secondo :) –
E mi da due;) – bedwyr
ho visto: = un sacco di posti. Di solito ho letto che è "definito da". In C++, C#, Java (+ un centinaio di altri posti): = equals =. E quando questo è vero, ussually = equals ==. Wow - è stato un punto delicato per me. Scusa per essere stato così cattivo nello spiegare me stesso :) – cwap