เชลล์? ตัวแปร
ตัวแปรเชลล์
เมื่อคุณกำหนดตัวแปรชื่อตัวแปรโดยไม่ต้องมีเครื่องหมายดอลลาร์ ($ ตัวแปรภาษา PHP จำเป็น) เช่น:
your_name="w3big.com"
ทราบว่ามีไม่มีช่องว่างระหว่างชื่อตัวแปรและเครื่องหมายเท่ากับซึ่งอาจจะคุ้นเคยกับคุณและทุกภาษาโปรแกรมจะไม่เหมือนกัน ในขณะที่ชื่อตัวแปรจะต้องปฏิบัติตามกฎการตั้งชื่อเหล่านี้:
- ตัวอักษรตัวแรกจะต้องเป็นตัวอักษร (az, AZ)
- ไม่มีช่องว่างให้ใช้ขีดล่าง (_)
- คุณไม่สามารถใช้เครื่องหมายวรรคตอน
- คุณไม่สามารถใช้ทุบตีคำ (ช่วยคำสั่งเพื่อดูคำหลักลิขสิทธิ์ที่มีอยู่)
นอกจากนี้อย่างชัดเจนมอบหมายโดยตรงคุณยังสามารถกำหนดค่าตัวแปรที่มีงบเช่น:
for file in `ls /etc`
ข้อความข้างต้นชื่อไฟล์ / etc ไดเรกทอรีออกจากการไหลเวียน
การใช้ตัวแปร
ใช้ตัวแปรที่กำหนดไว้ตราบเท่าที่ชื่อตัวแปรนำหน้าด้วยเครื่องหมายดอลลาร์เช่นนี้
your_name="qinjx" echo $your_name echo ${your_name}
ชื่อตัวแปรนอกวงเล็บปีกกาเป็นตัวเลือกบวกโดยไม่ต้องทั้งหมดที่ถูกต้องเพิ่มการจัดฟันเพื่อช่วยอธิบายตัวแปรบัตรประจำตัวเขตแดนเช่นกรณีต่อไปนี้:
for skill in Ada Coffe Action Java; do echo "I am good at ${skill}Script" done
ถ้าคุณไม่ให้ตัวแปรทักษะบวกวงเล็บเขียน echo "ฉันดีที่ $ skillScript" ล่ามจะใส่ $ skillScript เป็นตัวแปร (ค่าที่เป็นที่ว่างเปล่า) การเรียกใช้โค้ดไม่ได้เป็นผลที่เราคาดหวังเหมือนเดิมอีกครั้ง
บอกทุกวงเล็บตัวแปรก็คือการปฏิบัติเขียนโปรแกรมที่ดี
ตัวแปรที่กำหนดไว้ได้อีกครั้งที่กำหนดไว้เช่น:
your_name="tom" echo $your_name your_name="alibaba" echo $your_name
เขียนเป็นกฎหมาย แต่ทราบว่าเมื่อได้รับมอบหมายที่สองไม่สามารถเขียน $ your_name = "อาลีบาบา" ใช้ตัวแปรเมื่อมันจะถูกเพิ่มเครื่องหมายดอลลาร์ ($)
อ่านอย่างเดียวตัวแปร
ใช้คำสั่งตัวแปรอ่านได้อย่างเดียวสามารถกำหนดเป็นแบบอ่านอย่างเดียวตัวแปรค่าของอ่านอย่างเดียวตัวแปรที่ไม่สามารถเปลี่ยนแปลงได้
ตัวอย่างต่อไปนี้พยายามที่จะเปลี่ยนตัวแปรอ่านอย่างเดียวผลที่จะได้รับ:
#!/bin/bash myUrl="http://www.w3cschool.cc" readonly myUrl myUrl="http://www.w3big.com"
เรียกใช้สคริปต์ที่มีผลต่อไปนี้:
/bin/sh: NAME: This variable is read only.
นำตัวแปร
ใช้คำสั่งล้างลบตัวแปร ไวยากรณ์:
unset variable_name
ตัวแปรที่ไม่สามารถนำกลับมาใช้หลังจากที่ถูกลบออก คำสั่งล้างไม่สามารถลบตัวแปรอ่านอย่างเดียว
ตัวอย่าง
#!/bin/sh myUrl="http://www.w3big.com" unset myUrl echo $myUrl
ตัวอย่างของการดำเนินการดังกล่าวข้างต้นจะมีผลลัพธ์ออกมา
ประเภทตัวแปร
เมื่อคุณเรียกใช้เปลือกจะมีสามพารามิเตอร์พร้อมกัน:
- 1) ตัวแปรท้องถิ่นตัวแปรที่กำหนดไว้ในสคริปต์หรือคำสั่งจะใช้ได้เฉพาะในกรณีเปลือกปัจจุบันโปรแกรมเริ่มต้นเปลือกอื่น ๆ ที่ไม่สามารถเข้าถึงตัวแปรท้องถิ่น
- 2) ตัวแปรสิ่งแวดล้อมโปรแกรมทั้งหมดรวมถึงโปรแกรมเปลือกเริ่มต้นสามารถเข้าถึงตัวแปรสภาพแวดล้อมการใช้งานบางอย่างต้องใช้ตัวแปรสภาพแวดล้อมเพื่อให้การทำงานปกติของพวกเขา เมื่อมีความจำเป็นเชลล์สคริปต์ยังสามารถกำหนดตัวแปรสภาพแวดล้อม
- 3) ตัวแปรเชลล์ตัวแปรคือตัวแปรพิเศษที่กำหนดโดยโปรแกรมเปลือก เปลือกเป็นส่วนหนึ่งของตัวแปรตัวแปรสภาพแวดล้อมบางตัวแปรท้องถิ่นเพื่อให้แน่ใจว่าการดำเนินงานปกติของเปลือก
สตริงเชลล์
การเขียนโปรแกรมสตริงเปลือกเป็นส่วนใหญ่และมีประโยชน์ชนิดข้อมูล (ยกเว้นตัวเลขและสตริงยังขาดชนิดอื่น ๆ ที่มีประโยชน์) สตริงสามารถล้อมรอบในราคาเดียวราคาคู่นอกจากนี้ยังสามารถนำมาใช้หรือไม่อาจจะอยู่ในเครื่องหมายคำพูด ความแตกต่างระหว่างเครื่องหมายคำพูดเดี่ยวและคู่กับ PHP จะคล้ายกัน
ราคาเดียว
str='this is a string'
อ้างข้อ จำกัด เดียวสตริง:
- ตัวอักษรใด ๆ ในราคาเดียวจะออกเป็นคำพูดเดียวในตัวแปรสตริงไม่ถูกต้อง
- สตริงที่ยกเดียวไม่สามารถปรากฏในคำพูดเดียว (ใช้ราคาเดียวหลังจากที่ตัวหนีหรือ)
คำพูดคู่
your_name='qinjx' str="Hello, I know your are \"$your_name\"! \n"
ราคาสองครั้งข้อดี:
- ราคาคู่สามารถมีตัวแปร
- ราคาคู่สามารถปรากฏตัวหนี
concatenation สตริง
your_name="qinjx" greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1
ได้รับความยาวสาย
string="abcd" echo ${#string} #输出 4
ย่อยสารสกัดจาก
ตัวอย่างต่อไปนี้จากครั้งแรกสองสายตัวละครเริ่มจับสี่ตัวอักษร:
string="w3big is a great site" echo ${string:1:4} # 输出 unoo
ค้นหาย่อย
ค้นหาตัวละคร "ฉันหรือ S" ตำแหน่ง:
string="w3big is a great company" echo `expr index "$string" is` # 输出 8
หมายเหตุ: สคริปต์ข้าง "` "ต่อต้านคำพูดมากกว่าราคาเดียว" "อย่าถูกหลอกโอ้
อาร์เรย์เชลล์
ทุบตีสนับสนุนอาร์เรย์หนึ่งมิติ (ไม่สนับสนุนอาร์เรย์หลายมิติ) และไม่ได้กำหนดขนาดของอาร์เรย์
คล้ายกับภาษา C ห้อยขององค์ประกอบมากมายจากหมายเลข 0 เริ่มต้น ได้รับการอาร์เรย์ขององค์ประกอบที่จะใช้ประโยชน์จากการห้อยห้อยอาจเป็นจำนวนเต็มหรือการแสดงออกทางคณิตศาสตร์ที่มีค่าควรมากกว่าหรือเท่ากับ 0
กำหนดอาร์เรย์
ในกะลาใช้วงเล็บหมายถึงอาร์เรย์องค์ประกอบมากมายที่มีสัญลักษณ์ "พื้นที่" แยกออกจากกัน รูปแบบทั่วไปของอาร์เรย์ถูกกำหนดไว้ดังต่อไปนี้:
数组名=(值1 值2 ... 值n)
ตัวอย่างเช่น:
array_name=(value0 value1 value2 value3)
หรือ
array_name=( value0 value1 value2 value3 )
นอกจากนี้คุณยังสามารถกำหนดแยกต่างหากสำหรับองค์ประกอบของอาร์เรย์แต่ละ
array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen
คุณไม่สามารถใช้ดัชนีอย่างต่อเนื่องและมีขีด จำกัด ภายใต้กรอบเป้าหมายไม่มี
อ่านอาร์เรย์
รูปแบบทั่วไปจะอ่านค่าองค์ประกอบอาร์เรย์:
${数组名[下标]}
ตัวอย่างเช่น:
valuen=${array_name[n]}
ใช้สัญลักษณ์ @ จะได้รับอาร์เรย์ขององค์ประกอบทั้งหมดเช่น:
echo ${array_name[@]}
ได้รับความยาวของอาร์เรย์
ได้รับอาร์เรย์ของความยาวของความยาวสายและได้รับวิธีการเดียวกันตัวอย่างเช่น:
# 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 lengthn=${#array_name[n]}
เชลล์หมายเหตุ
Line กับ "#" ที่จุดเริ่มต้นของความคิดเห็นจะได้รับการปฏิเสธโดยล่าม
SH ไม่มีความเห็นหลายคู่สายแต่ละสายสามารถเพิ่มสัญญาณ # เพียงเช่นนี้
#-------------------------------------------- # 这是一个注释 # author:本教程 # site:www.w3big.com # slogan:学的不仅是技术,更是梦想! #-------------------------------------------- ##### 用户配置区 开始 ##### # # # 这里可以添加脚本描述信息 # # ##### 用户配置区 结束 #####
หากกระบวนการพัฒนาพบชิ้นใหญ่ของรหัสที่ต้องการจะแสดงความคิดเห็นชั่วคราวขึ้นหลังจากที่ในขณะ uncommented และวิธีการที่จะทำหรือไม่
แต่ละแถวจะเพิ่มสัญลักษณ์ # ลำบากเกินไปคุณสามารถใส่รหัสบางอย่างที่จะมีคำอธิบายประกอบกับคู่ของวงเล็บปีกกาที่กำหนดให้เป็นฟังก์ชั่นสถานที่ที่จะเรียกใช้ฟังก์ชันนี้รหัสนี้จะไม่ถูกดำเนินการมาถึงและแสดงความคิดเห็นเป็น ผล