Kesalahan variabel loop untuk loop

10

Ketika saya menggunakan untuk suka

 for i in 1 2 3 4 5 

maka file saya berisi #!/bin/shdi bagian atas.

Tetapi ketika saya menggunakan

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

maka itu menunjukkan kesalahan

Syntax error: Bad for loop variable

dan berjalan dengan benar ketika saya menghapus shebang. Tolong beritahu saya alasan di balik ini.

Gaurav Rai
sumber

Jawaban:

11

for(( i = 0; i<=5; i++))khusus untuk Bash dan tidak berfungsi dengan shell Bourne polos ( /bin/sh).

Jika Anda menghapus shebang, skrip dijalankan oleh shell Anda saat ini (yang kemungkinan adalah Bash) sehingga berfungsi.

Ganti #!/bin/shdengan #!/bin/bashuntuk membuat shebang berfungsi.

Florian Diesch
sumber
Apakah ada cara untuk melakukannya dalam shmode? Terima kasih!
Ziyaddin Sadigov
2
i=0; while [ $i -le 5 ]; do echo $i; i=$((i+1)); done
Florian Diesch
1
Saya sudah menggunakan #bash dan tidak berfungsi
BG Bruno
2
for(( i = 0; i<=5; i++))

untuk jenis loop ini hanya berjalan pada Bash shell. jadi, jika Anda ingin menjalankan ini, maka coba perintah ini:

$bash filename.sh

Saya pikir ini akan berfungsi dengan baik. dan lihat ini juga.

Sudip Das
sumber
1

Saya telah memecahkan masalah ini dengan menggunakan ./ alih-alih perintah sh. Sebagai contoh jika Anda menempatkan sh test.shsebaliknya hanya membuat perintah Anda sebagai ./test.shDan kemungkinan besar masalah akan terpecahkan.

dilantha111
sumber
0

Coba ini mungkin ini bisa menyelesaikan masalah Anda

#!/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
smn_onrocks
sumber