ตัวดำเนินการ“:” (โคลอน) ในการขยายตัวแปร bash คืออะไร: VAR = $ {TEMP: 3}


12

ความหมายของบรรทัดต่อไปนี้ในตัวแปรbashคืออะไร?

VAR=${TEMP:3}

1
@chaos โปรดอย่าแก้ไขคำถามเพื่อให้ตรงกับคำตอบของคุณดีกว่า ;-)
Pilot6

@ Pilot6 ฉันไม่ได้เปลี่ยนความหมาย หรือฉันเข้าใจบางสิ่งผิดปกติ ฉันทำให้ดีกว่าที่จะหา (ชื่อเรื่อง) และอ่านได้มากขึ้น .. BTW : ยังมีความหมายอื่น ๆ เช่นคำสั่ง bash builtin ฉันต้องการที่จะแตกต่างจากที่เพราะคำถามไม่ชัดเจนเกี่ยวกับที่ สิ่งที่ผู้ใช้หมายถึงคือ:โอเปอเรเตอร์ภายในชื่อตัวแปร ฉันขอโทษฉันไม่ต้องการรบกวนใครบางคน แต่การย้อนกลับของคุณไม่สมเหตุสมผลและควรกลับรายการ แต่ฉันไม่ต้องการสงครามการแก้ไขที่นี่ นอกจากนี้ยังมีการทุบตีและการเขียนสคริปต์ที่เฉพาะเจาะจงดังนั้นทำไมลบแท็กเหล่านั้นออก
ความโกลาหล

คุณลบTEMPและVARตัวแปรและเปลี่ยนคำถามในแบบที่คำตอบอื่นสูญเสียความหมาย
Pilot6

@ Pilot6 ในคำตอบของฉันฉันไม่ได้อ้างถึงVARตัวแปร แต่คุณมีอิสระที่จะเปลี่ยนสิ่งนั้นกลับ ฉันต้องการทำให้คำถามทั่วไปมีความเฉพาะเจาะจงน้อยลง มันไม่ได้หมายถึงการก่อวินาศกรรมคำตอบอื่น ๆ
ความโกลาหล

2
@SnakeDoc ไม่เป็นหัวข้อทั้งหมดถูกต้อง
muru

คำตอบ:


15

นี่คือการขยายตัวแปรและใช้งานเช่นนี้ (สังเกตว่านี่เป็นเพียงbashและkshเฉพาะเจาะจงเท่านั้นและจะไม่ทำงานใน POSIX เชลล์):

$ x=1234567890
$ echo ${x:3}
4567890
$ echo ${x:7}
890
$ echo ${x:3:5}
45678

  • ${var:pos}หมายความว่าตัวแปรมีการขยายเริ่มต้นจากการชดเชยvarpos
  • ${var:pos:len}หมายความว่าตัวแปรvarมีการขยายเริ่มต้นจากการชดเชยที่มีความยาวposlen

Woks zshด้วย
kos

2
@ kos มันไม่คุ้มค่าที่จะกล่าวถึงเพราะทุกอย่างทำงานได้ในzsh=) ฉันทำสคริปต์ลดน้ำหนักและลดน้ำหนักได้zsh10 กิโลกรัมใน 1 สัปดาห์
ความโกลาหล

zshเพื่อตรวจสอบว่าทำให้คุณโง่ที่เส้นทางการพิมพ์เมื่อคุณไม่ได้ใช้มัน :)
คอส

1
@kos Hehe, มันค่อนข้างเหมือนกับ jquery: meta.stackexchange.com/a/19492
ความโกลาหล

1
ฉันชอบคำตอบเดียวที่พยายามตอบคำถามได้ -2 เพราะ "jQuery ไม่เพียงพอ"! :)
คอส

7

ในทุบตีมันตัดออกไป 3 ตัวอักษรตัวแรกของตัวแปร (สตริง):

$ VAR="hello world"
$ echo ${VAR:3}
lo world

มีลักษณะที่ 'substring สกัด' ที่นี่: http://www.tldp.org/LDP/abs/html/string-manipulation.html


2

ผู้ประกอบการนี้การตัดออกจาก 3 ตัวอักษรแรกของตัวแปรและกำหนดส่วนที่เหลือให้กับตัวแปรTEMPVAR

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.