Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

บทช่วยสอน Bash Variable – 6 ตัวอย่างตัวแปร Bash ทั่วโลกและในเครื่อง

บทช่วยสอน Bash Variable – 6 ตัวอย่างตัวแปร Bash ทั่วโลกและในเครื่องบทความนี้เป็นส่วนหนึ่งของชุดการสอนทุบตีที่กำลังดำเนินอยู่ เช่นเดียวกับภาษาการเขียนโปรแกรมอื่น ๆ Bash ยังมีตัวแปรอีกด้วย

ตัวแปร Bash ให้การจัดเก็บข้อมูลชั่วคราวสำหรับข้อมูลที่จำเป็นในช่วงอายุของโปรแกรม

ไวยากรณ์:

VARNAME=VALUE

หมายเหตุ: ไม่ควรมีที่ว่างรอบๆ เครื่องหมาย “=" ในการมอบหมายตัวแปร เมื่อคุณใช้ VAR=VALUE เชลล์จะเห็นว่า “=" เป็นสัญลักษณ์และถือว่าคำสั่งนั้นเป็นการกำหนดค่าตัวแปร เมื่อคุณใช้ VAR =VALUE เชลล์จะถือว่า VAR ต้องเป็นชื่อของคำสั่งและพยายามดำเนินการ

เชลล์ไม่สนใจชนิดของตัวแปร ตัวแปรสามารถเก็บสตริง จำนวนเต็ม หรือจำนวนจริงได้

ตัวอย่าง 1 การใช้การกำหนดตัวแปร Bash อย่างง่าย

สคริปต์ต่อไปนี้สร้างตัวแปรที่เรียกว่า LIST และกำหนดค่า “/var/opt/bin” ในการเข้าถึงตัวแปร เพียงเติม $ นำหน้าชื่อตัวแปรซึ่งจะทำให้คุณได้รับค่าที่เก็บไว้ในตัวแปรนั้น

$ cat sample.sh
#!/bin/bash
LIST="/var/opt/bin/"
ls -l $LIST

ดำเนินการสคริปต์ด้านบน ซึ่งจะแสดงรายการ /var/opt/bin ในรูปแบบยาวดังที่แสดงด้านล่าง

$ ./sample.sh
total 8
drwxrwsr-x 2 bin bin 4096 Jan 29 06:43 softwares
drwxr-sr-x 5 root bin 4096 Sep 2 2009 llist

ขอบเขตตัวแปรทุบตี – ในพื้นที่และทั่วโลก

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

ตัวอย่างที่ 2 ค่าว่างในตัวแปรทุบตี

$ cat var1.sh
#!/bin/sh
echo "Variable value is: $VAR1"
VAR1="GEEKSTUFF"
echo "Variable value is: $VAR1"

$ ./var1.sh
Variable value is:
Variable value is: GEEKSTUFF

ดังที่แสดงไว้ข้างต้น เริ่มต้นตัวแปรจะมีค่าว่าง หลังจากกำหนด คุณจะได้รับค่าของคุณ คำสั่ง export ใช้เพื่อส่งออกตัวแปรจากเชลล์แบบโต้ตอบ การส่งออกแสดงผลกระทบต่อขอบเขตของตัวแปร

ตัวอย่างที่ 3 Bash Variables โดยไม่ต้องเอ็กซ์พอร์ต

กำหนดตัวแปรที่มีค่าในเชลล์แบบโต้ตอบ และพยายามเข้าถึงตัวแปรนั้นในเชลล์สคริปต์ของคุณ

$ VAR2=LINUX

$ cat var2.sh
#!/bin/bash
echo "VAR2=$VAR2"
VAR2=UNIX
echo "VAR2=$VAR2"

ตอนนี้ รันสคริปต์ด้านบนดังที่แสดงด้านล่าง

$ ./var2.sh
VAR2=
VAR2=UNIX

คุณจะได้รับค่าว่างสำหรับตัวแปร VAR2 เชลล์เก็บตัวแปร VAR2 ด้วย LINUX เฉพาะในเชลล์ปัจจุบันเท่านั้น ในระหว่างการดำเนินการ var2.sh เชลล์จะวางไข่และเรียกใช้สคริปต์ ดังนั้นตัวแปร VAR2 จะไม่มีค่าในเชลล์ที่เกิด คุณต้องส่งออกตัวแปรเพื่อให้โปรแกรมอื่นสืบทอดมา ซึ่งรวมถึงเชลล์สคริปต์ดังที่แสดงด้านล่าง

ตัวอย่างที่ 4 การส่งออก Bash Variable

$ export VAR2=LINUX

$ cat var2.sh
#!/bin/bash
echo "VAR2=$VAR2"
VAR2=UNIX
echo "VAR2=$VAR2"

ตอนนี้รันสคริปต์ด้านบน

$ ./var2.sh
VAR2=LINUX
VAR2=UNIX
$
$echo $VAR2
LINUX

ตอนนี้ คุณสามารถสังเกตได้ว่าหลังจากเรียกใช้เชลล์สคริปต์ var2.sh แล้ว ค่าของ VAR2 คือ LINUX เนื่องจากตัวแปรจะไม่ถูกส่งกลับไปยังเชลล์แบบโต้ตอบของคุณ เว้นแต่คุณจะเรียกใช้สคริปต์ในเชลล์ปัจจุบัน

การประกาศตัวแปรทุบตี

การใช้คำสั่งประกาศใน bash เราสามารถจำกัดค่าที่กำหนดให้กับตัวแปรได้ มันจำกัดคุณสมบัติของตัวแปร ตัวเลือกในคำสั่งประกาศใช้เพื่อกำหนดประเภทของตัวแปร

ไวยากรณ์:

declare option variablename
  • ประกาศเป็นคีย์เวิร์ด
  • ตัวเลือกอาจเป็น:
    • -r ตัวแปรแบบอ่านอย่างเดียว
    • -i ตัวแปรจำนวนเต็ม
    • - ตัวแปรอาร์เรย์
    • -f สำหรับ funtions
    • -x ประกาศและส่งออกคำสั่งที่ตามมาผ่านสภาพแวดล้อม

ตัวอย่างที่ 5. การประกาศตัวแปร Bash โดยใช้การประกาศ

$ cat declar.sh
#!/bin/bash
declare -i intvar
intvar=123 # Assigning integer value.
echo $intvar
intvar=12.3 #Trying to store string type value to an integer variable
echo $intvar

declare -r rovar=281
rovar=212 # Trying to change the readonly variable.

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

$ ./declar.sh
123
t.sh: line 6: 12.3: syntax error: invalid arithmetic operator (error token is ".3")
123
t.sh: line 11: rovar: readonly variable

ตัวแปร Global Bash

ตัวแปรโกลบอลเรียกอีกอย่างว่าตัวแปรสภาพแวดล้อม ซึ่งจะใช้ได้กับเชลล์ทั้งหมด คำสั่ง printenv ใช้เพื่อแสดงตัวแปรสภาพแวดล้อมทั้งหมด

$ printenv
SHELL=/bin/bash
HISTSIZE=1000
SSH_TTY=/dev/pts/1
HOME=/root
LOGNAME=root
CVS_RSH=ssh

ตัวแปร Bash ในเครื่อง

ตัวแปรโลคัลสามารถมองเห็นได้เฉพาะภายในบล็อกของโค้ด local เป็นคีย์เวิร์ดที่ใช้ในการประกาศตัวแปรท้องถิ่น ในฟังก์ชัน ตัวแปรโลคัลมีความหมายเฉพาะภายในบล็อกฟังก์ชันนั้นเท่านั้น

ตัวอย่างที่ 6 ตัวแปร Bash ทั่วโลกและในเครื่อง

$ cat localvar.sh
#!/bin/bash
pprint()
{
 local lvar="Local content"
 echo -e "Local variable value with in the function"
 echo $lvar
 gvar="Global content changed"
 echo -e "Global variable value with in the function"
 echo $gvar
}

gvar="Global content"
echo -e "Global variable value before calling function"
echo $gvar
echo -e "Local variable value before calling function"
echo $lvar
pprint
echo -e "Global variable value after calling function"
echo $gvar
echo -e "Local variable value after calling function"
echo $lvar

ดำเนินการสคริปต์ข้างต้น

$ sh t.sh
Global variable value before calling function
Global content
Local variable value before calling function

Local variable value with in the function
Local content
Global variable value with in the function
Global content changed
Global variable value after calling function
Global content changed
Local variable value after calling function

ในผลลัพธ์ข้างต้น ตัวแปรโลคัลจะมีเฉพาะค่าว่างก่อนและหลังการเรียกใช้ฟังก์ชัน ขอบเขตของมันอยู่ในฟังก์ชันเท่านั้น มันหายไปจากฟังก์ชันแล้ว ในขณะที่ตัวแปรส่วนกลางมีค่าที่อัปเดตแม้หลังจากเรียกใช้ฟังก์ชันแล้ว