хотя цикл в Баш - PullRequest
       1

хотя цикл в Баш

0 голосов
/ 25 марта 2012

Я новичок в bash-скриптинге и пытаюсь выучить несколько вещей Вот код, который я пробовал:

n=$1
shift

echo "Printing your name $n times"
count=1
for ((i=1;i<=$n;i++))
do
    echo $@ -$i
    count='expr[$count+1]'
done

echo 'New Model'
count=1
while ["$count" -le "$n"]
do
    echo $@ -$i
    count='expr[$count+1]'
done

Цикл for работает нормально, но цикл while не печатает желаемый результат. Результат цикла for и while должен быть одинаковым. Не могли бы вы сказать мне, где я ошибся. Спасибо.

Ответы [ 3 ]

3 голосов
/ 25 марта 2012

Одна проблема заключается в том, что вам нужно заключить в скобки пробелы, чтобы bash знал, что это отдельные слова. То есть измени это:

while ["$count" -le "$n"]

к этому:

while [ "$count" -le "$n" ]

Другое, что это:

count='expr[$count+1]'

фактически устанавливает переменную count для конкретной строки expr[$count+1]. Что вы, кажется, имеете в виду, это:

count=$((count+1))

, который увеличивает значение count на 1.

2 голосов
/ 25 марта 2012

другие способы увеличения переменной:

#!/bin/bash

count=1

#count=`expr $count + 1 `
#(( count++ ))
#count=$[$count + 1]
#count=$[count + 1]
#let count=count+1
#let count++
#count=$(( count + 1 ))

echo $count
1 голос
/ 25 марта 2012

попробуйте это:

count=1
while [ "$count" -le "$n" ]
do
echo $@ -$i
count=`expr $count + 1`
done

должен быть пробел в условии while.и для приращения count требуется обратная кавычка, а не одиночная кавычка, чтобы выполнить команду и присвоить ее переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...