ตัวดำเนินการ '#' ที่ด้านหน้าของตัวแปรทำอะไรในการขยายตัวของตัวแปร


12

ด้านล่างเป็นรหัสที่ฉันเรียกใช้ในเทอร์มินัล

[root@idm ~]# x="$(date +%d%m%y)"    
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6

คนที่สามารถช่วยให้ฉันเข้าใจว่าทำไมออกเป็น6? สิ่ง#สำคัญที่ทำให้ตัวแปรคืออะไร?

คำตอบ:


25

เป็นการขยายพารามิเตอร์ที่ส่งคืนความยาวของพารามิเตอร์หรือจำนวนองค์ประกอบในอาร์เรย์หรือจำนวนพารามิเตอร์ตำแหน่ง

โปรดอ่านคู่มือเชลล์ของคุณ ต่อไปนี้มาจากbashคู่มือ:

${#parameter}

ความยาวในตัวละครของมูลค่าparameterแทน ถ้าparameterเป็น*หรือ@ค่าทดแทนคือจำนวนของพารามิเตอร์ตำแหน่ง ถ้า parameterเป็นชื่ออาร์เรย์ที่ห้อยด้วย*หรือ@ค่าที่ทดแทนคือจำนวนองค์ประกอบในอาร์เรย์ หาก parameterเป็นชื่ออาร์เรย์ที่ทำดัชนีห้อยด้วยจำนวนลบจำนวนนั้นจะถูกตีความว่าสัมพันธ์กับหนึ่งมากกว่าดัชนีสูงสุดของพารามิเตอร์ดังนั้นดัชนีเชิงลบนับกลับจากปลายอาร์เรย์และดัชนี -1 อ้างอิงองค์ประกอบสุดท้าย .


และโปรดอย่าสร้างนิสัยการทำงานในเชลล์รูทแบบโต้ตอบ มันอันตรายและประมาทอย่างที่สุด ใช้sudoเท่าที่จำเป็นและเฉพาะในสถานการณ์ที่ต้องใช้สิทธิ์ยกระดับ การเล่นกับbashเป็นสิ่งที่คุณสามารถทำได้อย่างแน่นอนในฐานะผู้ใช้ที่ไม่ใช่ผู้ใช้ธรรมดา

ในช่วงไม่กี่ปีที่ผ่านมาฉันใช้เชลล์รูทแบบโต้ตอบสำหรับการเพิ่มผู้ใช้คนเดียวด้วยตนเองเท่านั้น มันเป็นงาน 2 นาทีและจากนั้นฉันไม่จำเป็นต้องเห็น#พรอมต์อีกครั้งบนเครื่องนั้น


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