ด้านล่างเป็นรหัสที่ฉันเรียกใช้ในเทอร์มินัล
[root@idm ~]# x="$(date +%d%m%y)"
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6
คนที่สามารถช่วยให้ฉันเข้าใจว่าทำไมออกเป็น6
? สิ่ง#
สำคัญที่ทำให้ตัวแปรคืออะไร?
ด้านล่างเป็นรหัสที่ฉันเรียกใช้ในเทอร์มินัล
[root@idm ~]# x="$(date +%d%m%y)"
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6
คนที่สามารถช่วยให้ฉันเข้าใจว่าทำไมออกเป็น6
? สิ่ง#
สำคัญที่ทำให้ตัวแปรคืออะไร?
คำตอบ:
เป็นการขยายพารามิเตอร์ที่ส่งคืนความยาวของพารามิเตอร์หรือจำนวนองค์ประกอบในอาร์เรย์หรือจำนวนพารามิเตอร์ตำแหน่ง
โปรดอ่านคู่มือเชลล์ของคุณ ต่อไปนี้มาจากbash
คู่มือ:
${#parameter}
ความยาวในตัวละครของมูลค่า
parameter
แทน ถ้าparameter
เป็น*
หรือ@
ค่าทดแทนคือจำนวนของพารามิเตอร์ตำแหน่ง ถ้าparameter
เป็นชื่ออาร์เรย์ที่ห้อยด้วย*
หรือ@
ค่าที่ทดแทนคือจำนวนองค์ประกอบในอาร์เรย์ หากparameter
เป็นชื่ออาร์เรย์ที่ทำดัชนีห้อยด้วยจำนวนลบจำนวนนั้นจะถูกตีความว่าสัมพันธ์กับหนึ่งมากกว่าดัชนีสูงสุดของพารามิเตอร์ดังนั้นดัชนีเชิงลบนับกลับจากปลายอาร์เรย์และดัชนี -1 อ้างอิงองค์ประกอบสุดท้าย .
และโปรดอย่าสร้างนิสัยการทำงานในเชลล์รูทแบบโต้ตอบ มันอันตรายและประมาทอย่างที่สุด ใช้sudo
เท่าที่จำเป็นและเฉพาะในสถานการณ์ที่ต้องใช้สิทธิ์ยกระดับ การเล่นกับbash
เป็นสิ่งที่คุณสามารถทำได้อย่างแน่นอนในฐานะผู้ใช้ที่ไม่ใช่ผู้ใช้ธรรมดา
ในช่วงไม่กี่ปีที่ผ่านมาฉันใช้เชลล์รูทแบบโต้ตอบสำหรับการเพิ่มผู้ใช้คนเดียวด้วยตนเองเท่านั้น มันเป็นงาน 2 นาทีและจากนั้นฉันไม่จำเป็นต้องเห็น#
พรอมต์อีกครั้งบนเครื่องนั้น
#
ผู้ประกอบการส่งกลับความยาวของตัวแปร ในกรณีของคุณx
ความยาวของตัวแปรคือหก
โปรดดูที่การแทนที่พารามิเตอร์สำหรับข้อมูลเพิ่มเติม