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 -fekspansi nama file shell sambil menyimpan nilai untuk $-- jika ada - dalam $1. Selanjutnya, tidak ada gumpalan terjadi, dan +fekspansi nama file terakhir sekali lagi diaktifkan, dan mungkin juga dinonaktifkan.
Misalnya, jika -fekspansi nama file sudah dinonaktifkan ketika nilai untuk $-pertama kali disimpan, maka nilai yang disimpannya akan (setidaknya) :
f
Dan ketika setdijalankan lagi, itu berfungsi untuk:
set +f -f
Yang hanya menempatkan Anda segera kembali ke tempat Anda mulai.
set +o
Akan mencantumkan semua setopsi shell tabel (lihat jawaban Jason untuk yang shoptmampu - 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 shoption dan settabel 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 -fpuntuk juga menyertakan semua fungsi shell yang saat ini dideklarasikan. Anda dapat menyatukan semuanya dan evalsaat siap. Anda bahkan dapat menelepon aliastanpa argumen untuk alasan yang sama. Itu ... mungkin menutupinya. Saya kira ada "$@"- yang harus Anda letakkan dalam basharray 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 traps - dan jadi tidak mewarisi traps tetapi yang orangtuanya secara eksplisit diabaikan - (seperti trap '' INT) .
Namun:
trap 'echo this is my trap' 0
save_traps=$(trap)
trapberperilaku 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 trapsdalam 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 -pdan readonly -pmengembalikan atribut shell var yang asli secara eksplisit .
Bagaimanapun, itu sudah cukup.
set +odanshopt? (Untukshoptbisa menjadi kata,settabledigunakan di halaman manual, jadishoptablebekerja untuk saya)