Perché apparentemente Mac OS è uno dei sistemi che risponde all'opzione xpg_echo
quando viene eseguita in modalità POSIX. Eseguire bash come / bin / sh equivale all'esecuzione con --posix
o con l'impostazione POSIXLY_CORRECT.
La soluzione è di smettere di usare echo
tranne nei casi in cui non ci può essere ambiguità. printf
è la sostituzione portatile. Non utilizzare mai i flag di opzione da echo, (e usa printf
se lo fai).
Esistono più implementazioni storiche incompatibili di echo
che interrompono la sua specifica in un modo che non può essere corretto e pertanto le flag di opzione non sono portabili. Non sono a conoscenza di qualcosa che attualmente implementa correttamente POSIX echo
.
shopt -u xpg_echo
dovrebbe modificare questo comportamento. Inoltre, come hai già scoperto, non in esecuzione in modalità POSIX.
Potresti anche voler aggiornare ... bash 3 sta diventando un po 'croccante. Molti bug sono stati corretti da allora.