Comprendo che la $(...)sintassi di sostituzione dei comandi più moderna è preferita rispetto alla `sintassi precedente, a causa della nidificazione più facile e meno soggetta a errori e della sintassi di escape.
Inoltre, sembra che la maggior parte delle /bin/shshell in stile moderno supporti $(…):
- bash
- ash (e quindi BusyBox, quindi la maggior parte di Linux incorporato)
- trattino
- FreeBSD / bin / sh
Ed $(…)è specificato da IEEE 1003.1.
Quindi ho 2 domande molto correlate:
- C'è qualche motivo per usare `nel nuovo sviluppo di script di shell se non si conosce un vecchio sistema specifico su cui lo script dovrà essere eseguito?
- C'è qualche motivo per non insegnare agli studenti di programmazione UNIX solo a scrivere
$(...)e discutere`solo come una variante obsoleta che probabilmente incontreranno se stanno leggendo gli script della shell di altri sviluppatori (e potrebbero aver bisogno se stanno lavorando con un sistema molto vecchio o non standard per qualche ragione)?
$()- MAIUSC + 4,9, MAIUSC + 0 - 5 tasti premuti;
`...`. È lì solo per la portabilità all'indietro con la shell Bourne (come la shell Bourne aveva^(lo stesso|) per la portabilità all'indietro con la shell Thomson). Nota comunque che(t)cshnon ce l'hanno$(...)(ma non ha molto senso usarli o insegnarli).