Apakah penyertaan array dalam POSIX menyebabkan standar POSIX rusak?

Aug 16 2020

Kemampuan untuk menggunakan array di bash dan ksh93 sangat nyaman ketika diperlukan untuk mengakses elemen dengan cepat dari beberapa array. Berikut contoh singkatnya:

#!/bin/ksh93 --

array1=(1 2 3 4 5 6 7)

array2=(8 9 10 11 12 13 14)

printf '%s\n' "Third element of array1 is ${array1[2]} and fifth element of array2 is ${array2[4]}"

Saya ingat membaca sambil lalu bahwa setidaknya sebagian dari alasan array tidak termasuk dalam standar POSIX adalah karena melakukan hal itu akan merusak banyak hal. Apakah ini benar? Hal apa yang akan rusak?

Jawaban

2 bk2204 Aug 18 2020 at 08:39

Saya tidak tahu teks apa yang Anda maksud, tetapi saya cukup yakin ini bukan masalahnya, karena bashdan ksh93seharusnya sesuai dengan POSIX, dan jika array memang menyebabkan shell POSIX rusak, maka shell tersebut tidak akan sesuai. .

Namun, itu tidak berarti bahwa POSIX kemungkinan akan menyertakannya. Pertama, bashdan ksh93mungkin tidak mengimplementasikan array dengan cara yang sama, dan POSIX tidak ingin menentukan fitur yang berperilaku berbeda dalam implementasi historis yang diterapkan secara luas.

Kedua, POSIX umumnya tidak menentukan banyak fitur. Baru sekarang bahkan ada proposal untuk diminta local, yang disebarkan secara luas di hampir setiap shell POSIX open source kecuali ksh93. Demikian pula, dimungkinkan untuk menggunakan viimplementasi yang hanya mengimplementasikan fitur POSIX, tetapi sebagian besar pengguna akan menganggapnya cukup jarang pada fitur.

Akhirnya, POSIX lebih memilih untuk menstandarisasi hal-hal yang sudah tersedia di sebagian besar implementasi, dan array shell bukanlah hal semacam itu. dashkekurangan mereka, seperti halnya sebagian besar shell yang berbagi garis keturunan, serta implementasi kecil seperti busybox. Lingkungan POSIX yang lengkap dapat berukuran relatif kecil, dan itu sangat nyaman bagi orang-orang yang perlu bekerja dengan sistem tertanam, jadi barang bagus yang dimiliki sering diabaikan demi kesederhanaan.

Perhatikan juga bahwa hanya karena penerapan open source yang diterapkan secara luas memiliki fitur tidak berarti bahwa lingkungan Unix komersial akan melakukannya. Bahkan jika POSIX menentukan array dalam versi baru, butuh waktu bertahun-tahun sebelum semua sistem tersebut diperbarui untuk mendukungnya.