<Trước | Nội dung | Tiếp theo>
đọc - Đọc giá trị từ đầu vào chuẩn
đọc lệnh nội trang được sử dụng để đọc một dòng đầu vào chuẩn. Lệnh này có thể được sử dụng để đọc đầu vào bàn phím hoặc khi chuyển hướng được sử dụng, một dòng dữ liệu từ một tệp. Lệnh có cú pháp sau:
đọc [-lựa chọn] [biến...]
Ở đâu lựa chọn là một hoặc nhiều tùy chọn khả dụng được liệt kê bên dưới và biến là tên của một hoặc nhiều biến được sử dụng để giữ giá trị đầu vào. Nếu không có tên biến nào được hỗ trợ, thì biến shell ĐÁP LẠI chứa dòng dữ liệu.
Về cơ bản, đọc gán các trường từ đầu vào chuẩn cho các biến được chỉ định. Nếu chúng tôi sửa đổi tập lệnh đánh giá số nguyên của chúng tôi để sử dụng đọc, nó có thể trông như thế này:
#! / bin / bash
# read-integer: đánh giá giá trị của một số nguyên.
echo -n "Vui lòng nhập số nguyên ->" đọc int
if [["$ int" = ~ ^ -? [0-9] + $]]; then if [$ int -eq 0]; sau đó
echo "$ int bằng không."
khác
nếu [$ int -lt 0]; sau đó
echo "$ int là âm."
khác
echo "$ int là tích cực."
fi
if [$ ((int% 2)) -eq 0]; thì echo "$ int là số chẵn."
khác
echo "$ int là số lẻ."
fi
fi khác
echo "Giá trị đầu vào không phải là số nguyên." > & 2 lối ra 1
fi
#! / bin / bash
# read-integer: đánh giá giá trị của một số nguyên.
echo -n "Vui lòng nhập số nguyên ->" đọc int
if [["$ int" = ~ ^ -? [0-9] + $]]; then if [$ int -eq 0]; sau đó
echo "$ int bằng không."
khác
nếu [$ int -lt 0]; sau đó
echo "$ int là âm."
khác
echo "$ int là tích cực."
fi
if [$ ((int% 2)) -eq 0]; thì echo "$ int là số chẵn."
khác
echo "$ int là số lẻ."
fi
fi khác
echo "Giá trị đầu vào không phải là số nguyên." > & 2 lối ra 1
fi
Chúng tôi sử dụng bỏ lỡ với -n tùy chọn (loại bỏ dòng mới ở cuối trên đầu ra) để hiển thị lời nhắc, sau đó sử dụng đọc để nhập một giá trị cho biến int. Chạy tập lệnh này dẫn đến kết quả như sau:
[tôi @ linuxbox ~] $ số nguyên đọc
Vui lòng nhập một số nguyên -> 5
5 là tích cực.
5 là số lẻ.
[tôi @ linuxbox ~] $ số nguyên đọc
Vui lòng nhập một số nguyên -> 5
5 là tích cực.
5 là số lẻ.
read có thể gán đầu vào cho nhiều biến, như được hiển thị trong tập lệnh này:
#! / bin / bash
# read-multi: đọc nhiều giá trị từ bàn phím echo -n "Nhập một hoặc nhiều giá trị>"
đọc var1 var2 var3 var4 var5
echo "var1 = '$ var1'" echo "var2 = '$ var2'" echo "var3 = '$ var3'" echo "var4 = '$ var4'" echo "var5 = '$ var5'"
#! / bin / bash
# read-multi: đọc nhiều giá trị từ bàn phím echo -n "Nhập một hoặc nhiều giá trị>"
đọc var1 var2 var3 var4 var5
echo "var1 = '$ var1'" echo "var2 = '$ var2'" echo "var3 = '$ var3'" echo "var4 = '$ var4'" echo "var5 = '$ var5'"
Trong tập lệnh này, chúng tôi chỉ định và hiển thị tối đa năm giá trị. Nhận thấy như thế nào đọc hoạt động khi được cung cấp số lượng giá trị khác nhau:
[tôi @ linuxbox ~] $ đọc nhiều
Nhập một hoặc nhiều giá trị> abcde
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'e'
[tôi @ linuxbox ~] $ đọc nhiều Nhập một hoặc nhiều giá trị> a var1 = 'a'
var2 = '' var3 = '' var4 = '' var5 = ''
[tôi @ linuxbox ~] $ đọc nhiều
Nhập một hoặc nhiều giá trị> abcdefg
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'efg'
[tôi @ linuxbox ~] $ đọc nhiều
Nhập một hoặc nhiều giá trị> abcde
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'e'
[tôi @ linuxbox ~] $ đọc nhiều Nhập một hoặc nhiều giá trị> a var1 = 'a'
var2 = '' var3 = '' var4 = '' var5 = ''
[tôi @ linuxbox ~] $ đọc nhiều
Nhập một hoặc nhiều giá trị> abcdefg
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'efg'
If đọc nhận được ít hơn số lượng mong đợi, các biến phụ trống, trong khi lượng đầu vào quá nhiều dẫn đến biến cuối cùng chứa tất cả các đầu vào bổ sung.
Nếu không có biến nào được liệt kê sau đọc lệnh, một biến shell, ĐÁP LẠI, sẽ được ký kết tất cả các đầu vào:
#! / bin / bash
# read-single: đọc nhiều giá trị vào biến mặc định echo -n "Nhập một hoặc nhiều giá trị>"
đọc
echo "REPLY = '$ REPLY'"
#! / bin / bash
# read-single: đọc nhiều giá trị vào biến mặc định echo -n "Nhập một hoặc nhiều giá trị>"
đọc
echo "REPLY = '$ REPLY'"
Chạy tập lệnh này dẫn đến kết quả như sau:
[tôi @ linuxbox ~] $ đọc đơn
Nhập một hoặc nhiều giá trị> A B C D
REPLY = 'abcd'
[tôi @ linuxbox ~] $ đọc đơn
Nhập một hoặc nhiều giá trị> A B C D
REPLY = 'abcd'
<Trước | Nội dung | Tiếp theo>