ฉันเปิดเครื่อง bash แล้ว ฉันต้องการทราบว่าตัวเลือก extglob เปิดใช้งานหรือปิดใช้งานในเซสชั่นนี้ก่อนที่ฉันจะเปลี่ยนค่าของมัน ฉันจะทำสิ่งนี้ได้อย่างไร
ฉันเปิดเครื่อง bash แล้ว ฉันต้องการทราบว่าตัวเลือก extglob เปิดใช้งานหรือปิดใช้งานในเซสชั่นนี้ก่อนที่ฉันจะเปลี่ยนค่าของมัน ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
เพิ่งรัน:
$ shopt extglob
มันจะกลับสถานะปัจจุบัน:
$ shopt extglob
extglob on
$ shopt -u extglob
$ shopt extglob
extglob off
หากต้องการแสดงตัวเลือกทั้งหมดให้เรียกใช้:
$ shopt
ใช้shopt -q :
shopt -q extglob && echo enable || echo disable
-q
ตัวเลือกให้shopt
ยกเลิกเอาต์พุตและส่งคืนสถานะเพื่อระบุว่าตัวเลือกตั้งค่าหรือไม่ได้ตั้งค่า
โปรดทราบว่าshopt
เฉพาะรายงานตัวเลือกที่สามารถปรากฏในBASHOPTS
ตัวแปรตัวเลือกเหล่านั้นไม่สามารถใช้ได้กับset
คำสั่ง builtin
ในการตรวจสอบตัวเลือกที่ใช้ได้set
หรืออาจปรากฏในSHELLOPTS
ให้ใช้shopt -qo
:
$ bash --posix -c 'shopt -qo posix && echo enable || echo disable'
enable
shopt extglob
?
shopt extglob
วิธีการของคุณจะเขียนถึง stdout คุณกำลังคิดshopt -q extglob && shopt -u extglob || shopt -s extglob
?
shopt -q extglob && : Code when enable || : Code when disable
วิธีการทั่วไปคือ
มีสองรายการตัวเลือกในทุบตี หนึ่งสำหรับและหนึ่งสำหรับshopt
set
ตัวเลือกextglob
เป็นของshopt
รายการ
ค่าของมันอาจจะพิมพ์โดยใช้อย่างใดอย่างหนึ่งหรือshopt extglob
shopt -p extglob
ตัวเลือกที่nounset
เป็นของset
รายการ
ค่าของมันอาจจะพิมพ์โดยใช้หรือshopt -op nounset
shopt -o nounset
หากต้องการพิมพ์ตัวเลือกเฉพาะ (โดยไม่มีการเปลี่ยนแปลง) สำหรับ shopt ให้ใช้shopt -p name
:
$ shopt -p xpg_echo
shopt -u xpg_echo
และสำหรับการset
ใช้: shopt -po name
(ใช่คุณอาจใช้shopt -op
สำหรับset
รายการ)
$ shopt -po xtrace
set +o xtrace
เพื่อแสดงรายการตัวเลือกทั้งหมดจาก shopt ใช้shopt
(หรือนำมาใช้ใหม่shopt -p
)
นอกจากนี้ยังมีshopt -s
หรือshopt -u
สามารถนำมาใช้
วิธีที่จะแสดงรายการตัวเลือกทั้งหมดที่จะset
อยู่กับset -o
(ที่เกี่ยวข้องset +o
)
หรือ: shopt -o
เทียบเท่ากับset -o
และคือการshopt -op
set +o
จากLESS=+/'^ *shopt \[' man bash
:
หากไม่มีตัวเลือกหรือด้วยตัวเลือก -p รายการของตัวเลือกที่ตั้งค่าได้ทั้งหมดจะปรากฏขึ้นหากใช้ -s หรือ -u โดยไม่มีอาร์กิวเมนต์ optname หน้าจอจะ จำกัด ตัวเลือกเหล่านั้นที่ตั้งค่าไว้หรือไม่ได้ตั้งค่าตามลำดับ
จากLESS=+/'^ *set \[' man bash
:
หาก -o มาพร้อมกับไม่มีชื่อตัวเลือกค่าของตัวเลือกปัจจุบันจะถูกพิมพ์ หาก + o ไม่มีตัวเลือกชื่อชุดคำสั่งชุดเพื่อสร้างการตั้งค่าตัวเลือกปัจจุบันจะปรากฏบนเอาต์พุตมาตรฐาน
$ set -o
allexport off
braceexpand on
emacs on
errexit off
errtrace off
functrace off
hashall on
histexpand on
history on
ignoreeof off
interactive-comments on
keyword off
monitor on
noclobber off
noexec off
noglob off
nolog off
notify off
nounset off
onecmd off
physical off
pipefail off
posix off
privileged off
verbose off
vi off
xtrace off
และ
$ shopt -sp
shopt -s checkwinsize
shopt -s cmdhist
shopt -s expand_aliases
shopt -s extglob
shopt -s extquote
shopt -s force_fignore
shopt -s histappend
shopt -s histverify
shopt -s interactive_comments
shopt -s progcomp
shopt -s promptvars
shopt -s sourcepath
เป็นมูลค่าการกล่าวขวัญเกี่ยวกับshopt -op
รายการset
ตัวเลือกที่จริง:
$ shopt -op
set +o allexport
set -o braceexpand
set -o emacs
set +o errexit
set +o errtrace
set +o functrace
set -o hashall
set -o histexpand
set -o history
set +o ignoreeof
set -o interactive-comments
set +o keyword
set -o monitor
set +o noclobber
set +o noexec
set +o noglob
set +o nolog
set +o notify
set +o nounset
set +o onecmd
set +o physical
set +o pipefail
set +o posix
set +o privileged
set +o verbose
set +o vi
set +o xtrace
shopt -s extglob
shopt -u extglob
มันไม่ได้สร้างความแตกต่าง แต่อย่างใดถ้ามันเป็นในตอนแรกหรือไม่