เวิร์กสเตชันออนไลน์ของ OnWorks Linux และ Windows

โลโก้

ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | Contents | ถัดไป>

การกำหนดค่าให้กับตัวแปรและค่าคงที่

นี่คือจุดที่ความรู้ของเราเกี่ยวกับการขยายตัวเริ่มได้ผลจริง ดังที่เราได้เห็น ตัวแปรถูกกำหนดค่าด้วยวิธีนี้:

ตัวแปร=ความคุ้มค่า

ที่ไหน ตัวแปร เป็นชื่อของตัวแปรและ ความคุ้มค่า เป็นสตริง ไม่เหมือนกับภาษาโปรแกรมอื่น ๆ เชลล์ไม่สนใจประเภทของข้อมูลที่กำหนดให้กับตัวแปร มันถือว่าพวกเขาทั้งหมดเป็นสตริง คุณสามารถบังคับให้เชลล์จำกัดการกำหนดให้เป็นจำนวนเต็มได้โดยใช้ ประกาศ สั่งกับ -i ตัวเลือก แต่เช่นเดียวกับการตั้งค่าตัวแปรเป็นแบบอ่านอย่างเดียว วิธีนี้ไม่ค่อยได้ทำ

โปรดทราบว่าในการมอบหมายงาน ต้องไม่มีช่องว่างระหว่างชื่อตัวแปร เครื่องหมายเท่ากับ และค่า แล้วค่าสามารถประกอบด้วยอะไร? อะไรก็ตามที่เราสามารถขยายเป็นสตริงได้:


ก=ซ

b="สตริง"

c="a สตริงและ $b"


d=$(ls -l foo.txt) e=$((5 * 7)) f="\t\ta string\n"

# กำหนดสตริง "z" ให้กับตัวแปร a

# ช่องว่างภายในต้องอยู่ภายในเครื่องหมายคำพูด

# การขยายอื่น ๆ เช่นตัวแปรสามารถ

#ขยายไปสู่งาน

#ผลลัพธ์ของคำสั่ง

# การขยายเลขคณิต

# ลำดับ Escape เช่นแท็บและการขึ้นบรรทัดใหม่

ก=ซ

b="สตริง"

c="a สตริงและ $b"


d=$(ls -l foo.txt) e=$((5 * 7)) f="\t\ta string\n"


ภาพ

การกำหนดตัวแปรหลายตัวสามารถทำได้ในบรรทัดเดียว:



a=5 b="สตริง"

a=5 b="สตริง"


ในระหว่างการขยาย ชื่อตัวแปรอาจถูกล้อมรอบด้วยวงเล็บปีกกาเสริม “{}” สิ่งนี้มีประโยชน์ในกรณีที่ชื่อตัวแปรมีความคลุมเครือเนื่องจากปัจจัยแวดล้อม


ข้อความ. ที่นี่เราพยายามเปลี่ยนชื่อไฟล์จาก ไฟล์ของฉัน ไปยัง ไฟล์ของฉัน1โดยใช้ตัวแปร:



[me@linuxbox ~]$ ชื่อไฟล์ = "myfile" [me@linuxbox ~]$ แตะ $filename [me@linuxbox ~]$ mv $ชื่อไฟล์ $filename1

mv: ไฟล์ปลายทางที่หายไปหลังจาก `myfile' ลอง `mv --help' สำหรับข้อมูลเพิ่มเติม

[me@linuxbox ~]$ ชื่อไฟล์ = "myfile" [me@linuxbox ~]$ แตะ $filename [me@linuxbox ~]$ mv $ชื่อไฟล์ $filename1

mv: ไฟล์ปลายทางที่หายไปหลังจาก `myfile' ลอง `mv --help' สำหรับข้อมูลเพิ่มเติม


ความพยายามนี้ล้มเหลวเนื่องจากเชลล์ตีความอาร์กิวเมนต์ที่สองของ mv คำสั่งเป็นตัวแปรใหม่ (และว่างเปล่า) ปัญหาสามารถแก้ไขได้ด้วยวิธีนี้:



[me@linuxbox ~]$ mv $ชื่อไฟล์ ${filename}1

[me@linuxbox ~]$ mv $ชื่อไฟล์ ${filename}1


โดยการเพิ่มเหล็กจัดฟันรอบๆ เปลือกจะไม่ตีความส่วนท้ายอีกต่อไป 1 เป็นส่วนหนึ่งของชื่อตัวแปร

เราจะใช้โอกาสนี้ในการเพิ่มข้อมูลบางส่วนลงในรายงานของเรา กล่าวคือ วันที่และเวลาที่สร้างรายงานและชื่อผู้ใช้ของผู้สร้าง:



#! / bin / ทุบตี

# โปรแกรมที่จะส่งออกหน้าข้อมูลระบบ TITLE="System Information Report For $HOSTNAME"

CURRENT_TIME=$(วันที่ +"%x %r %Z")

TIMESTAMP="สร้าง $CURRENT_TIME โดย $USER"


เสียงสะท้อน "

$TITLE

$TITLE

$TIMESTAMP

"

#! / bin / ทุบตี

# โปรแกรมที่จะส่งออกหน้าข้อมูลระบบ TITLE="System Information Report For $HOSTNAME"

CURRENT_TIME=$(วันที่ +"%x %r %Z")

TIMESTAMP="สร้าง $CURRENT_TIME โดย $USER"


เสียงสะท้อน "

$TITLE

$TITLE

$TIMESTAMP

"


ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: