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/sh
shell 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)csh
non ce l'hanno$(...)
(ma non ha molto senso usarli o insegnarli).