วิธีตรวจสอบว่าตัวแปรถูกตั้งค่าหรือว่างใน bash

How Check Variable Is Set



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

ไวยากรณ์:







[[ -vตัวแปร]]หรือ[[ -กับตัวแปร]]

ตัวเลือก '-v' หรือ '-z' ใช้เพื่อตรวจสอบว่าตัวแปรถูกตั้งค่าหรือไม่ได้ตั้งค่า นิพจน์บูลีนด้านบนจะคืนค่า จริง หากตัวแปรถูกตั้งค่าและคืนค่า เท็จ หากตัวแปรนั้นไม่ได้ตั้งค่าหรือว่างเปล่า



${ตัวแปร+สตริง}

การแทนที่พารามิเตอร์เป็นอีกวิธีหนึ่งในการตรวจสอบว่าตัวแปรถูกตั้งค่าหรือไม่ได้ตั้งค่า หากมีการตั้งค่าตัวแปร ค่าของสตริงจะส่งคืน มิฉะนั้น ค่า null จะส่งกลับ



ตัวอย่างที่ 1: ตรวจสอบว่าตัวแปรถูกตั้งค่าหรือไม่ได้ตั้งค่าโดยใช้ตัวเลือก '-z'

สร้างไฟล์ทุบตีชื่อ check_var1.sh ด้วยสคริปต์ต่อไปนี้ ที่นี่ ` . แรก ถ้า` เงื่อนไขจะกลับมาจริงและ ไม่ได้ตั้งค่าตัวแปร Num จะพิมพ์ ในคำสั่งถัดไป 20 ถูกกำหนดให้กับตัวแปร $num . เงื่อนไข `if` ที่สองจะส่งกลับค่าเท็จและ Num ถูกตั้งค่าและค่าของ Num=20 จะพิมพ์





check_var1.sh

#!/bin/bash
#ตรวจสอบว่าตัวแปรถูกตั้งค่าหรือไม่
ถ้า [ -กับ ${จำนวน} ];แล้ว
โยนออก ไม่ได้ตั้งค่าตัวแปร 'Num'
อื่น
โยนออก ''Num' ตัวแปรถูกตั้งค่า'
เป็น
#กำหนดมูลค่า
หนึ่ง=ยี่สิบ
#ตรวจสอบว่าตัวแปรถูกตั้งค่าหรือไม่หลังจากกำหนดค่าแล้ว
ถ้า [ -กับ ${จำนวน} ];แล้ว
โยนออก ไม่ได้ตั้งค่าตัวแปร ''Num''
อื่น
โยนออก ''Num ถูกตั้งค่าและค่าของ Num=$num'
เป็น

เรียกใช้สคริปต์



$ทุบตีcheckvar1.sh

ตัวอย่างที่ 2: ตรวจสอบว่ามีการตั้งค่าหรือยกเลิกการตั้งค่าตัวแปรโดยใช้การแทนที่พารามิเตอร์

สร้างไฟล์ทุบตีชื่อ check_var2.sh และเพิ่มสคริปต์ต่อไปนี้ ที่นี่ ค่าสตริงถูกกำหนดให้กับตัวแปร $str ก่อนตรวจสอบว่าตัวแปรถูกตั้งค่าหรือไม่ได้ตั้งค่า เงื่อนไข 'if' จะกลับมาจริงและข้อความ มีการตั้งค่าตัวแปร 'str' และค่าคือ Hello จะพิมพ์

check_var2.sh

#!/bin/bash
#ตั้งค่าตัวแปร
NS=สวัสดี
#กำหนดค่า World เพื่อ checkval หากตัวแปร str ถูกตั้งค่า
checkval=${str+โลก}
#Check ตัวแปรถูกตั้งค่าหรือ unset
ถ้า [ $checkval -eqโลก];แล้ว
โยนออก 'str' ตัวแปรถูกตั้งค่าและค่าเป็น$ str'
อื่น
โยนออก ไม่ได้ตั้งค่าตัวแปร 'str'
เป็น

เรียกใช้สคริปต์

$ทุบตีcheckvar2.sh

ตัวอย่างที่ 3: ตรวจสอบว่าตัวแปรว่างหรือไม่

สร้างไฟล์ทุบตีชื่อ check_var3.sh และเพิ่มสคริปต์ต่อไปนี้ สคริปต์จะเก็บอาร์กิวเมนต์บรรทัดคำสั่งแรกไว้ในตัวแปร $argv ที่จะทดสอบในคำสั่งถัดไป ผลลัพธ์จะเป็น อาร์กิวเมนต์แรกว่างเปล่า หากไม่มีการส่งผ่านอาร์กิวเมนต์ มิฉะนั้น ค่าของอาร์กิวเมนต์แรกจะถูกพิมพ์

check_var3.sh

#!/bin/sh
#Read ค่าอาร์กิวเมนต์บรรทัดคำสั่งแรก
argv='$ 1'
#ตรวจสอบค่าอาร์กิวเมนต์แรกที่มีให้หรือไม่
[ -v '$argv' ] && โยนออก 'อาร์กิวเมนต์แรกว่างเปล่า' ||
โยนออก 'ค่าของอาร์กิวเมนต์แรกคือ$argv'

เรียกใช้สคริปต์โดยไม่มีอาร์กิวเมนต์

$ทุบตีcheckvar3.sh

เรียกใช้สคริปต์ด้วยอาร์กิวเมนต์

$ทุบตีcheckvar3.shทดสอบ

บทสรุป

วิธีต่างๆ ในการตรวจสอบตัวแปรถูกตั้งค่าหรือไม่ได้ตั้งค่าหรือว่างจะแสดงในบทช่วยสอนนี้โดยใช้ตัวอย่างต่างๆ หวังว่าบทช่วยสอนนี้จะช่วยให้ผู้ใช้เรียนรู้วิธีการทดสอบตัวแปร bash