Điểm:0

Sử dụng các biến trong vòng lặp for bash

lá cờ bd

Tôi chỉ tự hỏi liệu có thể sử dụng các biến trong vòng lặp for không?? tôi đã thử:

cho số trong { eval echo {0..$1}}
làm 
    tiếng vang 5
xong

Tôi muốn nó in ra 5 số lần tôi đã nhập vào lời nhắc, tuy nhiên, nó hoạt động lạ nếu tôi nhập:

./test.sh 2

Nó sẽ in ra 5 hai lần, nhưng nó in ra 5 bốn lần. Ai đó có thể giúp tôi với điều này? Và tại sao nó lại in ra 4 lần thay vì 2??

Chỉnh sửa: Phần lớn

cho số trong $(seq "$2")

Hoạt động nhưng nếu tôi thử tính toán với nó, nó sẽ phá vỡ mã của tôi:

thời gian = 1
tổng=5
cho số trong $(seq "$2")
làm
    echo "$time + $total" | bc
xong

Cung cấp: seq: đối số dấu phẩy động không hợp lệ: ââ Hãy thử 'seq --help' để biết thêm thông tin. Ai đó có thể cho tôi biết làm thế nào để sửa chữa nó??

lá cờ cc
Sử dụng ký tự ngược (`) thay vì { } bên ngoài và vòng lặp của bạn sẽ hoạt động, nhưng bắt đầu từ 1 thay vì 0 cho hai lần dự kiến ​​của bạn thông qua vòng lặp.
lá cờ hr
Nếu bạn sử dụng `seq "$2"` thì bạn cần cung cấp tham số vị trí thứ 2 bằng số khi bạn gọi tập lệnh ex. `./test.sh foo 2`
Điểm:2
lá cờ hr

Nó in ra 5 bốn lần vì { tiếng vang {0..2}} dẫn đến bốn mã thông báo được phân tách bằng khoảng trắng {, 0, 12}

Nếu bạn muốn sử dụng $1 khi kết thúc một biểu thức phạm vi trong bash, tốt hơn là sử dụng bên ngoài tiếp theo chỉ huy:

cho số trong $(seq "$1")

hoặc sử dụng kiểu C vòng

cho ((số=0; số<"$1"; số++))
Yunfei Chen avatar
lá cờ bd
Nó hoạt động nhưng nếu tôi sử dụng các biến bên trong vòng lặp for thì nó sẽ bị hỏng ngay lập tức
Yunfei Chen avatar
lá cờ bd
thời gian = 1 tổng=5 cho số trong $(seq "$2") làm echo "$time + $total" | bc xong
lá cờ hr
@YunfeiChen thất bại chính xác như thế nào? Bạn đang gọi kịch bản như thế nào? Cụ thể, bạn đang cung cấp bao nhiêu tham số vị trí (vì hình như bạn đã thay đổi `$1` thành `$2`)
Yunfei Chen avatar
lá cờ bd
Cung cấp cho tôi: (tiêu chuẩn_in) 1: lỗi cú pháp (tiêu chuẩn_in) 1: ký tự không hợp lệ: : (chuẩn_in) 1: lỗi cú pháp (chuẩn_in) 1: lỗi cú pháp (chuẩn_in) 1: lỗi cú pháp (chuẩn_in) 2: lỗi cú pháp (tiêu chuẩn_in) 2: ký tự không hợp lệ: : (chuẩn_in) 2: lỗi cú pháp (chuẩn_in) 2: lỗi cú pháp (chuẩn_in) 2: lỗi cú pháp
lá cờ hr
Nhận xét @YunfeiChen không phải là nơi thích hợp cho các câu hỏi tiếp theo - đặc biệt, việc định dạng không cho phép tôi xem những gì bạn thực sự đang nhập. Nếu "ký tự không hợp lệ" là `^M` thì đó là do tập lệnh của bạn có kết thúc dòng Windows.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.