printf %s\\n "$-"
Akan mencantumkan opsi huruf tunggal dalam satu string.
Parameter itu juga dapat digunakan seperti:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
Pertama-tama nonaktifkan -f
ekspansi nama file shell sambil menyimpan nilai untuk $-
- jika ada - dalam $1
. Selanjutnya, tidak ada gumpalan terjadi, dan +f
ekspansi nama file terakhir sekali lagi diaktifkan, dan mungkin juga dinonaktifkan.
Misalnya, jika -f
ekspansi nama file sudah dinonaktifkan ketika nilai untuk $-
pertama kali disimpan, maka nilai yang disimpannya akan (setidaknya) :
f
Dan ketika set
dijalankan lagi, itu berfungsi untuk:
set +f -f
Yang hanya menempatkan Anda segera kembali ke tempat Anda mulai.
set +o
Akan mencantumkan semua set
opsi shell tabel (lihat jawaban Jason untuk yang shopt
mampu - apakah itu kata? - opsi) dalam bentuk yang aman untuk masuk kembali shell. Dengan cara itu, Anda juga bisa melakukan:
state=$(set +o)
set -some -crazy -options
eval "$state"
Untuk menyimpan, mengubah, dan mengembalikan status opsi shell masing-masing.
Untuk menangani opsi shopt
ion dan set
tabel dalam sekali jalan:
state=$(set +o;shopt)
#do what you want with options here
eval "$state"
Anda juga dapat menelepon set
tanpa argumen apa pun untuk menambahkan daftar semua variabel shell yang saat ini ditetapkan - juga dikutip untuk masuk kembali ke shell. Dan Anda dapat - dalam bash - menambahkan perintah typeset -fp
untuk juga menyertakan semua fungsi shell yang saat ini dideklarasikan. Anda dapat menyatukan semuanya dan eval
saat siap. Anda bahkan dapat menelepon alias
tanpa argumen untuk alasan yang sama. Itu ... mungkin menutupinya. Saya kira ada "$@"
- yang harus Anda letakkan dalam bash
array terlebih dahulu, saya kira, sebelum melakukannyaset
.
Tidak, ada juga trap
. Yang ini sedikit lucu. Biasanya:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
... hanya akan mencetak ini adalah subshell saya karena subshell adalah proses baru dan mendapatkan set sendiri trap
s - dan jadi tidak mewarisi trap
s tetapi yang orangtuanya secara eksplisit diabaikan - (seperti trap '' INT
) .
Namun:
trap 'echo this is my trap' 0
save_traps=$(trap)
trap
berperilaku khusus ketika itu adalah perintah pertama dan satu - satunya yang dijalankan dalam subtitle perintah substitusi di mana ia akan mereproduksi daftar shell induk yang saat ini diatur traps
dalam format yang dikutip untuk masuk kembali secara aman ke shell. Dan Anda dapat melakukan itu save_traps
, kemudian set
tanpa argumen - dan semua yang telah disebutkan - untuk mendapatkan kunci pada semua kondisi shell. Anda mungkin ingin menambahkan export -p
dan readonly -p
mengembalikan atribut shell var yang asli secara eksplisit .
Bagaimanapun, itu sudah cukup.
set +o
danshopt
? (Untukshopt
bisa menjadi kata,settable
digunakan di halaman manual, jadishoptable
bekerja untuk saya)