shell中的嵌套循环

时间:2011-04-27 03:33:16

标签: linux bash shell

我是shell编程的初学者。我有一个与shell脚本中的嵌套循环相关的问题。我想获得这样的输出:

输入: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 个答案:

答案 0 :(得分:1)

试试这个

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那样可移植)

答案 1 :(得分:1)

我的脚本没有任何错误!虽然回声需要如下所示:

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

您可以尝试在访问变量时在变量前添加$。 它没有给我任何错误。

答案 2 :(得分:0)

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