ข้อผิดพลาดตัวแปรวนรอบในการวนซ้ำ


10

เมื่อฉันใช้เพื่อชอบ

 for i in 1 2 3 4 5 

ไฟล์ของฉันมี#!/bin/shอยู่ที่ด้านบน

แต่เมื่อฉันใช้

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

จากนั้นจะแสดงข้อผิดพลาด

Syntax error: Bad for loop variable

และทำงานอย่างถูกต้องเมื่อฉันลบ shebang กรุณาบอกเหตุผลที่อยู่เบื้องหลังนี้ให้ฉัน

คำตอบ:


11

for(( i = 0; i<=5; i++))เป็น Bash ที่เฉพาะเจาะจงและไม่ทำงานกับบอร์นเชลล์ธรรมดา ( /bin/sh)

หากคุณลบ Shebang สคริปต์จะดำเนินการโดยเชลล์ปัจจุบันของคุณ (ซึ่งน่าจะเป็น Bash) เพื่อให้ทำงานได้

แทนที่#!/bin/shด้วย#!/bin/bashเพื่อให้การทำงานของ shebang


มีวิธีใดที่จะทำในshโหมด? ขอบคุณ!
Ziyaddin Sadigov

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

1
ฉันใช้ #bash แล้วและใช้งานไม่ได้
BG Bruno

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

สำหรับลูปประเภทนี้จะทำงานกับ Bash shell เท่านั้น ดังนั้นหากคุณต้องการรันสิ่งนี้ให้ลองใช้คำสั่งนี้:

$bash filename.sh

ฉันคิดว่ามันจะทำงานได้ดี และดูสิ่งนี้ด้วย


1

ฉันแก้ไขปัญหานี้โดยใช้. / แทนที่จะเป็นคำสั่ง sh ตัวอย่างเช่นถ้าคุณวางsh test.shเพียงแค่ทำให้คำสั่งของคุณเป็น./test.shและปัญหาที่อาจจะได้รับการแก้ไข


0

ลองใช้นี่อาจเป็นวิธีการแก้ปัญหาของคุณ

#!/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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.