Một cách khác để làm điều này là chỉ chuyển hướng đầu vào tiêu chuẩn vào tệp của bạn, nơi bạn có tất cả đầu vào của người dùng theo thứ tự mà chương trình mong đợi. Ví dụ, với chương trình (được gọi script.sh
)
#!/bin/bash
echo "Enter your name:"
read name
echo "...and now your age:"
read age
# example of how to use the values now stored in variables $name and $age
echo "Hello $name. You're $age years old, right?"
và tệp đầu vào (được gọi input.in
)
Tomas
26
bạn có thể chạy nó từ thiết bị đầu cuối theo một trong hai cách sau:
$ cat input.in | ./script.sh
$ ./script.sh < input.in
và nó sẽ tương đương với việc chỉ chạy tập lệnh và nhập dữ liệu theo cách thủ công - nó sẽ in dòng "Xin chào Tomas. Bạn 26 tuổi, phải không?".
Như Radu Rădeanu đã đã gợi ý , bạn có thể sử dụng cat
trong kịch bản của bạn đọc nội dung của một tập tin vào một avariable - trong trường hợp đó, bạn cần mỗi tập tin có chứa chỉ một dòng, chỉ với những giá trị mà bạn muốn cho rằng biến cụ thể. Trong ví dụ trên, bạn muốn chia tập tin đầu vào thành một với tên (ví dụ name.in
) và một với tuổi (ví dụ age.in
), và thay đổi read name
và read age
dòng để name=$(cat name.in)
và age=$(cat age.in)
tương ứng.
KEY=VALUE
cặp? Các giải pháp khá khác nhau (nếu là câu trả lời sau, câu trả lời của Takkat được áp dụng, câu trả lời của Radu trước đây)