Lỗi biến vòng lặp trong vòng lặp for


10

Khi tôi đang sử dụng cho thích

 for i in 1 2 3 4 5 

sau đó tập tin của tôi chứa #!/bin/shở trên cùng.

Nhưng khi tôi đang sử dụng

for(( i = 0; i<=5; i++))

sau đó nó đang hiển thị lỗi

Syntax error: Bad for loop variable

và chạy đúng khi tôi loại bỏ shebang. Xin vui lòng cho tôi biết lý do đằng sau này.

Câu trả lời:


11

for(( i = 0; i<=5; i++))là Bash cụ thể và không hoạt động với shell Bourne ( /bin/sh).

Nếu bạn loại bỏ shebang, tập lệnh được chạy bởi trình bao hiện tại của bạn (có khả năng là Bash) để nó hoạt động.

Thay thế #!/bin/shbằng #!/bin/bashđể làm cho shebang hoạt động.


Có cách nào để làm điều đó trong shchế độ? Cảm ơn!
Ziyaddin Sadigov

2
i=0; while [ $i -le 5 ]; do echo $i; i=$((i+1)); done
Florian Diesch

1
Tôi đã sử dụng #bash và không hoạt động
BG Bruno

2
for(( i = 0; i<=5; i++))

đối với loại vòng lặp này chỉ chạy trên vỏ Bash. Vì vậy, nếu bạn muốn chạy cái này, thì hãy thử lệnh này:

$bash filename.sh

Tôi nghĩ rằng nó sẽ hoạt động tốt. và xem cái này cũng được.


1

Tôi đã giải quyết vấn đề này bằng cách sử dụng ./ thay vì lệnh sh. Ví dụ, nếu bạn đặt sh test.shthay vì chỉ thực hiện lệnh của bạn vì ./test.shVà rất có thể vấn đề sẽ được giải quyết.


0

Hãy thử điều này có thể là điều này có thể giải quyết vấn đề của bạn

#!/bin/bash
j=0
for (( i=1; i <= 5; i++ ))
do
 echo "the loop is runing $i time: and value of j is $j"
 j=`expr $j + 1`
done
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.