Kerang mana yang tidak mendukung ekspansi kurung dolar, dan permintaan backticks?


8

Rekomendasi modern adalah untuk menggunakan:

$(...)

bukannya yang lebih lama:

`...`

terutama untuk keterbacaan dan untuk menghindari perlunya melarikan diri saat bersarang.

Kerang mana yang tidak mendukung $(...)formulir, dan adakah di antara mereka yang masih digunakan saat ini?


1
Baca melalui Apakah backticks (yaitu cmd) di shell * sh telah ditinggalkan? dan Anda akan menemukan jawabannya.
John1024

Dikatakan "Satu-satunya alasan untuk menggunakan backticks adalah untuk kompatibilitas dengan shell Bourne nyata (seperti Heirloom)."
joeytwiddle

1
Satu poin penting adalah bahwa semua sistem Unix-like post-90 yang dikelola akan memiliki perintah yang disebut shyang akan didukung oleh lingkungan yang tepat $(...).
Stéphane Chazelas

Jawaban:


8

Shell Bourne asli, csh atau tcsh semua tidak mendukung $()dan mengharuskan `` substitusi perintah.

Shell Bourne tidak lagi digunakan sebagai shell default (/ bin / sh) pada banyak sistem operasi berbasis UNIX. Namun, cangkang ini masih dipasok oleh vendor OS karena masih digunakan karena alasan historis.

Baik AIX dan HP-UX memiliki / bin / sh sebagai shell yang sesuai dengan POSIX. Bourne shell masih tersedia pada AIX sebagai 'bsh' (tetapi dihentikan pada tahun 1995 dengan AIX 4.1) dan HP-UX 11.11 '/ usr / old / bin / sh' (Bourne dihapus dari 11.23). Saya tidak yakin kapan saklar dibuat, tetapi itu bertahun-tahun yang lalu.


5

Solaris 10 dan yang lebih lama /bin/shtidak mendukung $().

Ini masih digunakan sampai sekarang karena Solaris 10 masih digunakan, Sun tidak ingin menggantinya dengan versi yang sesuai standar (hingga dan termasuk Solaris 10) - dan karena kebanyakan orang menganggap /bin/shsebagai shell default dan tidak tahu bagaimana untuk mengeksekusi skrip dengan POSIX shell yang sesuai .

Motivasi Sun untuk tidak berubah /bin/shadalah untuk menghindari melanggar skrip shell yang ada yang mengandalkan perilaku tidak sesuai.


2
@cuonglm, ya, saya baru saja mengujinya dan saya bisa mengkonfirmasinya. Akan berpikir bahwa bukan Hurd akan dirilis daripada Sun / Oracle mengubah kebijakannya pada /bin/sh...
maxschlepzig
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.