Apa output dari echo $-1
, echo $-2
, echo $-3
.. artinya?
Di salah satu kotak Linux saya, itu menunjukkan kepada saya:
echo $-1
imsBEl1
echo $-2
imsBEl2
Dan pada kotak Linux lain, itu menunjukkan:
echo $-1
himBH1
echo $-2
himBH2
Apakah mereka memetakan ke beberapa lokasi memori atau sesuatu yang lain?
Jawaban:
POSIX mendefinisikan $ - sebagai:
Jadi
$-
bisa berbeda pangkalan di shell Anda atau bagaimana Anda memintanya.1
atau2
dipisahkan token di sini. Ketika shell melihat tanda kutip$
, itu akan mengidentifikasi awal dari setiap kandidat untuk ekspansi parameter, penggantian perintah, atau ekspansi aritmatika. Ia melihat$-
dan mengembangkannya, membiarkan sisanya tidak berubah.Anda dapat melihat bagian Pengakuan Token untuk lebih jelasnya.
sumber
echo $-
mencetak opsi shell saat ini (tanpa-
awalan).1
dan2
merupakan token yang tidak terkait tambahan.sumber
Menambahkan ke jawaban Miroslav:
Ini berarti bahwa ini adalah opsi, untuk masing-masing mesin.
Saya telah meneliti makna dari setiap bendera dan menyusun maknanya di bawah ini, dengan parafrase kecil.
sumber
Untuk memperluas jawaban yang ada, coba
echo "${-1}"
danecho "${-2}"
- Anda akan mendapatkan kesalahan "Substitusi buruk" karena alih-alih menggunakan-1
sebagai nama variabel, tanda hubung digunakan untuk mengganti nilai jika nama variabel sebelum tidak ditentukan. Sebagai contoh:sumber