Вложенная петля в оболочке - PullRequest
0 голосов
/ 27 апреля 2011

Я новичок в программировании оболочки.У меня есть проблема, связанная с вложенными циклами в сценариях оболочки.Я хочу получить вывод, подобный этому:

Ввод: 4

Вывод:

*
**
***
****

Это скрипт, который я использую до сих пор:

echo "input : "
read a
for ((i=0; i<a; i++))
do
   for ((j=0; j<i; j++))
   do
       echo "*"
   done
   echo "\n"
done

При попытке выполнить мою программу выдается ошибка: Bad for looping.

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 27 апреля 2011

Я не получаю никакой ошибки со сценарием! Хотя эхо должно быть другим, как показано ниже:

echo "input : "
read a
for ((i=0; i<a; i++))
do
   for ((j=0; j<i; j++))
   do
       echo -ne "*"
   done
   echo -ne "\n"
done

Вы можете попробовать добавить $ перед переменными при доступе к ним. Это не дает никаких ошибок для меня.

1 голос
/ 27 апреля 2011

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

echo "input : "
read a
for ((i=0; i<a; i++))
do
   for ((j=0; j<=i; j++))
   do
       printf "*"
   done
   echo
done

Чтобы не печатать новые строки, вы можете использовать printf (или echo -n, но не такой переносимый, как printf)

0 голосов
/ 05 марта 2012
#!/bin/bash

print_starry_row()
{
    n="$1"
    for ((i=0;i<n;i++))
    {
        echo -n "*"
    }
    echo
}

read -p "Enter number of stars? " num

if [[ "$num" -eq $num ]]
then
    for ((i=1;i<=num;i++))
    {
        print_starry_row $i
    }
else
    echo "You must enter a valid integrer"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...