2013-07-19 15 views
23

Mam następujący kod w pliku .sh:bash dla pętli: zakres numerów

for num in {1..10} 
do 
    echo $num 
done 

Który powinien wydrukować numery od 1 do 10. Jednak, to co mam:

{1..10} 

Ponadto, przy użyciu C-like sytax nie działa tak dobrze:

for ((i=1; i<=10; i++)) 

To dostaje mi błąd:

Syntax error: Bad for loop variable 

Wersja bash którą posiadam to 4.2.25.

+0

Twój kod działa dobrze dla mnie w 4.1.5 –

+0

Można również wydrukować zakres liczb za pomocą seq. Spróbuj "seq 1 5". – devnull

+0

Jeśli wykonasz 'bash' jako' sh', to nie zadziała; jeśli wykonasz 'bash' jako' bash', to zadziała. –

Odpowiedz

35

Kod powinien wyglądać następująco (zwróć uwagę na shebang mówi bash nie sh):

#!/bin/bash 
echo "Bash version ${BASH_VERSION}..." 
for i in {0..10..1} 
    do 
     echo "Welcome $i times" 
done 

źródło http://www.cyberciti.biz/faq/bash-for-loop/

+0

To: (zauważ, że shebang mówi bash, nie sh) –

+2

'' 1' jest niepotrzebne. –

+0

przynajmniej wygląda na to, że wykonuje skrypt powłoki powłoki basha. – Pradheep

Powiązane problemy