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)shopt
ion, yaitustate=$(set +o;shopt -p)
Dari
man
halaman:akan mencetak daftar semua opsi yang diaktifkan.
sumber
set
danshopt
?set
jauh lebih luas: lihat entri halaman manual .shopt <option>
huponexit
). cara mudah untuk memperbaikinya adalahshopt | grep on$
Untuk membuat daftar semua opsi:
Untuk memeriksa opsi tertentu:
Ambil opsi
verbose
sebagai contoh:sumber
Opsi ?: Ada tiga grup opsi dalam bash.
Opsi membaca atau diatur oleh perintah
set
.(gunakan perintah ini untuk manual
LESS=+/'set \[--abefhkmnptuvxBCEHPT\]' man bash
:)Semua opsi satu huruf:
abefhkmnptuvxBCEHPT
Juga opsi (yang tidak memiliki setara satu huruf):
Opsi membaca atau diatur oleh perintah
shopt
.(Baca manual dengan perintah ini:
LESS=+/'shopt \[-pqsu\]' man bash'
)Daftar ini cukup panjang tapi mudah untuk mencetak, gunakan:
atau yang serupa (tetapi tidak sama):
Opsi yang bisa diatur pada doa:
(perintah untuk manual:
LESS=+/'^INVOCATION' man bash
)Semua
set
opsi:Semua
shopt
opsiBeberapa opsi yang hanya bermakna saat BERTANYA bash:
Dan, juga (opsi panjang):
Semua
set
opsi satu huruf dan-ri
dicetak dengan$-
.Sebagai contoh:
Memanggil bash sebagai shell login hanya dilaporkan dengan shopt:
Demikian:
Opsi
-n
ini tidak dapat diuji dengan kode apa pun, karena artinya: jangan jalankan kode apa pun.Opsi pencetakan
Alat terbaik untuk mendaftar opsi-opsi shell yang sedang berjalan , baik yang diset dengan
set
atau set denganshopt
adalah samashopt
. Untuk daftar opsi set:Yang bertindak persis seperti
set -o
. Gunakanshopt -po
untuk mendapatkan hasil yang sama denganset +o
.Untuk daftar opsi shopt:
Dari mana Anda dapat memilih untuk mencetak yang ditetapkan
shopt -ps
atau tidak disetelshopt -pu
Untuk mendapatkan semua opsi. Sebisa mungkin karena banyak opsi panjang dan beberapa (
-sDc
) pada INVOCATION tidak dapat dicetak:Untuk menyimpannya dalam variabel:
Dan variabel dapat digunakan untuk mengatur kembali semua opsi:
sumber
Untuk memeriksa opsi tertentu:
sumber