Tôi có một tệp bash đã nhắc người dùng về một số tham số và sử dụng mặc định nếu không có gì được cung cấp. Kịch bản sau đó tiếp tục thực hiện một số lệnh khác với các tham số. Điều này làm việc tuyệt vời - không có vấn đề cho đến khi bổ sung gần đây nhất.Làm thế nào để đọc từ người dùng trong vòng lặp while-loop?
Trong nỗ lực đọc tham số NAMES từ tệp txt, tôi đã thêm một vòng lặp while để lấy tên trong tệp, nhưng tôi vẫn muốn các tham số còn lại được nhắc.
Nhưng một khi tôi thêm vòng lặp while, sản lượng cho thấy dấu nhắc in get_ans() và không bao giờ dừng lại để đọc lại, do đó tất cả các giá trị mặc định được chọn.
Tôi muốn đọc các tham số đầu tiên từ một tập tin, sau đó tất cả các file tiếp theo từ khiến người sử dụng.
Tôi đã làm gì bằng cách thêm vòng lặp while?
cat list.txt |
while read line
do
get_ans "Name" "$line"
read NAME < $tmp_file
get_ans "Name" "$line"
read NAME < $tmp_file
done
function get_ans
{
if [ -f $tmp_file ]; then
rm $tmp_file
PROMPT=$1
DEFAULT=$2
echo -n "$PROMPT [$DEFAULT]: "
read ans
if [ -z "$ans" ]; then
ans="$DEFAULT"
fi
echo "$ans" > $tmp_file
}
(Chú ý:. Mã không được sao chép & dán vì vậy hãy tha lỗi chính tả đang thực tế có chức năng xác định trước khi chính())
Tôi sẽ xem xét các câu trả lời khác của bạn (một trong số đó cho bạn biết cách giải quyết vấn đề, không chỉ là vấn đề) trước khi quyết định chấp nhận. –