Bagaimana cara mengeset parameter posisi?

11

Bagaimana saya melakukan ini:

set foo bar baz
unset # Something else here
echo $# # Should ouput 0

Dengan melakukan set "", $#akan tetap 1 dan bukan 0.

Tyilo
sumber

Jawaban:

14

Ok ini hanya bodoh, dan saya tahu menggunakan set --akan berhasil.

Tyilo
sumber
@Gilles: Menurut halaman manual bash, set -tanpa argumen, parameter posisi tidak berubah.
camh
@camh saya harus tidak setuju. Saya melihat ini di manual: set - Jika tidak ada argumen yang mengikuti opsi ini, maka parameter posisi tidak disetel. Jika tidak, parameter posisi diatur ke argumen, bahkan jika beberapa dari mereka mulai dengan -.
kdubs
@kdubs Anda mengutip halaman manual untuk set --. Saya telah menggunakan set -(tanda hubung tunggal), yang mengatakan: "Jika tidak ada argumen, parameter posisi tetap tidak berubah."
camh
kamu benar. Saya membuat mereka bingung. layar saya membuat - terlihat seperti -
kdubs
4

Mudah membatalkan semua parameter posisi dengan:

shift $#

Untuk menghapus 3 parameter posisi pertama:

shift 3

Shift "pops" dari parameter posisi N pertama. Dengan menggunakan $ # kita mendapatkan jumlah total parameter posisi. Perintah itu memunculkan semua parameter posisi.

Nuh
sumber