<ก่อนหน้านี้ | เนื้อหา | ถัดไป>
อ่าน – อ่านค่าจากอินพุตมาตรฐาน
พื้นที่ อ่าน คำสั่ง buildin ใช้เพื่ออ่านอินพุตมาตรฐานบรรทัดเดียว คำสั่งนี้สามารถใช้เพื่ออ่านอินพุตของคีย์บอร์ด หรือเมื่อมีการใช้การเปลี่ยนเส้นทาง บรรทัดของข้อมูลจากไฟล์ คำสั่งมีไวยากรณ์ต่อไปนี้:
อ่าน [-ตัวเลือก] [ตัวแปร... ]
ที่ไหน ตัวเลือก เป็นหนึ่งตัวเลือกขึ้นไปตามรายการด้านล่างและ ตัวแปร เป็นชื่อของตัวแปรตั้งแต่หนึ่งตัวขึ้นไปที่ใช้เก็บค่าอินพุต หากไม่ได้ระบุชื่อตัวแปรไว้ ตัวแปรเชลล์ ตอบ ประกอบด้วยบรรทัดข้อมูล
โดยทั่วไป อ่าน กำหนดฟิลด์จากอินพุตมาตรฐานให้กับตัวแปรที่ระบุ หากเราแก้ไขสคริปต์การประเมินจำนวนเต็มของเราเพื่อใช้ อ่านอาจมีลักษณะดังนี้:
#! / bin / ทุบตี
# read-integer: ประเมินค่าของจำนวนเต็ม
echo -n "โปรดป้อนจำนวนเต็ม -> " read int
ถ้า [[ "$int" =~ ^-?[0-9]+$ ]]; แล้วถ้า [ $int -eq 0 ]; แล้ว
echo "$int เป็นศูนย์"
อื่น
ถ้า [ $int -lt 0 ]; แล้ว
echo "$int เป็นค่าลบ"
อื่น
echo "$int เป็นค่าบวก"
fi
ถ้า [ $((int % 2)) -eq 0 ]; แล้วก้อง "$int เป็นคู่"
อื่น
echo "$int เป็นเลขคี่"
fi
fi อื่น
echo "ค่าที่ป้อนไม่ใช่จำนวนเต็ม" >&2 ทางออก 1
fi
#! / bin / ทุบตี
# read-integer: ประเมินค่าของจำนวนเต็ม
echo -n "โปรดป้อนจำนวนเต็ม -> " read int
ถ้า [[ "$int" =~ ^-?[0-9]+$ ]]; แล้วถ้า [ $int -eq 0 ]; แล้ว
echo "$int เป็นศูนย์"
อื่น
ถ้า [ $int -lt 0 ]; แล้ว
echo "$int เป็นค่าลบ"
อื่น
echo "$int เป็นค่าบวก"
fi
ถ้า [ $((int % 2)) -eq 0 ]; แล้วก้อง "$int เป็นคู่"
อื่น
echo "$int เป็นเลขคี่"
fi
fi อื่น
echo "ค่าที่ป้อนไม่ใช่จำนวนเต็ม" >&2 ทางออก 1
fi
เราใช้ เสียงสะท้อน กับ -n ตัวเลือก (ซึ่งระงับการขึ้นบรรทัดใหม่ต่อท้ายในเอาต์พุต) เพื่อแสดงข้อความแจ้ง แล้วใช้ อ่าน เพื่อป้อนค่าสำหรับตัวแปร int. การเรียกใช้สคริปต์นี้ส่งผลให้:
[me@linuxbox ~]$ อ่านจำนวนเต็ม
กรุณาใส่จำนวนเต็ม -> 5
5 เป็นบวก
5 เป็นเลขคี่
[me@linuxbox ~]$ อ่านจำนวนเต็ม
กรุณาใส่จำนวนเต็ม -> 5
5 เป็นบวก
5 เป็นเลขคี่
read สามารถกำหนดอินพุตให้กับหลายตัวแปร ดังที่แสดงในสคริปต์นี้:
#! / bin / ทุบตี
# read-multiple: อ่านค่าหลายค่าจากคีย์บอร์ด echo -n "ป้อนค่าอย่างน้อยหนึ่งค่า>"
อ่าน var1 var2 var3 var4 var5
echo "var1 = '$var1'" echo "var2 = '$var2'" echo "var3 = '$var3'" echo "var4 = '$var4'" echo "var5 = '$var5'"
#! / bin / ทุบตี
# read-multiple: อ่านค่าหลายค่าจากคีย์บอร์ด echo -n "ป้อนค่าอย่างน้อยหนึ่งค่า>"
อ่าน var1 var2 var3 var4 var5
echo "var1 = '$var1'" echo "var2 = '$var2'" echo "var3 = '$var3'" echo "var4 = '$var4'" echo "var5 = '$var5'"
ในสคริปต์นี้ เรากำหนดและแสดงค่าได้สูงสุดห้าค่า สังเกตว่า อ่าน ทำงานเมื่อได้รับค่าต่าง ๆ :
[me@linuxbox ~]$ อ่านหลาย
ป้อนค่าอย่างน้อยหนึ่งค่า > abcde
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'e'
[me@linuxbox ~]$ อ่านหลาย ป้อนค่าอย่างน้อยหนึ่งค่า > a var1 = 'a'
var2 = '' var3 = '' var4 = '' var5 = ''
[me@linuxbox ~]$ อ่านหลาย
ป้อนค่าอย่างน้อยหนึ่งค่า > abcdefg
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'efg'
[me@linuxbox ~]$ อ่านหลาย
ป้อนค่าอย่างน้อยหนึ่งค่า > abcde
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'e'
[me@linuxbox ~]$ อ่านหลาย ป้อนค่าอย่างน้อยหนึ่งค่า > a var1 = 'a'
var2 = '' var3 = '' var4 = '' var5 = ''
[me@linuxbox ~]$ อ่านหลาย
ป้อนค่าอย่างน้อยหนึ่งค่า > abcdefg
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'efg'
If อ่าน ได้รับน้อยกว่าจำนวนที่คาดไว้ ตัวแปรพิเศษว่างเปล่า ในขณะที่อินพุตจำนวนมากเกินไปส่งผลให้ตัวแปรสุดท้ายประกอบด้วยอินพุตพิเศษทั้งหมด
หากไม่มีตัวแปรใดแสดงอยู่หลังเครื่องหมาย อ่าน คำสั่ง, ตัวแปรเชลล์, ตอบจะถูกกำหนดเป็นอินพุตทั้งหมด:
#! / bin / ทุบตี
# read-single: อ่านค่าหลายค่าในตัวแปรเริ่มต้น echo -n "ป้อนค่าอย่างน้อยหนึ่งค่า> "
อ่าน
echo "REPLY = '$ตอบกลับ'"
#! / bin / ทุบตี
# read-single: อ่านค่าหลายค่าในตัวแปรเริ่มต้น echo -n "ป้อนค่าอย่างน้อยหนึ่งค่า> "
อ่าน
echo "REPLY = '$ตอบกลับ'"
การเรียกใช้สคริปต์นี้ส่งผลให้:
[me@linuxbox ~]$ อ่านคนเดียว
ป้อนค่าอย่างน้อยหนึ่งค่า > เอบีซีดี
ตอบกลับ = 'abcd'
[me@linuxbox ~]$ อ่านคนเดียว
ป้อนค่าอย่างน้อยหนึ่งค่า > เอบีซีดี
ตอบกลับ = 'abcd'