Shell 脚本 while 在 for 循环内循环

Shell script while loop inside a for loop

使用 tcsh,我想为每个 x、y、z、e 和 f 打印“Hello”。但是使用下面的脚本,它只打印 x。谁能告诉我如何为 y、z、e 和 f 打印“Hello”?

#! /bin/tcsh -f
set arr=(x y z e f)

set j = 0
foreach i ($arr)
echo $i
   while ($j < 5)

     echo "Hello"
     @ j++
    end
end 

结果是:
x
你好
你好
你好
你好
你好
y
z
e
f

将 'j' 变量的初始化移动到 foreach 循环中:

#! /bin/tcsh -f
set arr=(x y z e f)

foreach i ($arr)
    echo $i
    set j = 0
    while ($j < 5)
            echo "Hello"
            @ j++
    end
end 

输出:

$ ./s.sh
x
Hello
Hello
Hello
Hello
Hello
y
Hello
Hello
Hello
Hello
Hello
z
Hello
Hello
Hello
Hello
Hello
e
Hello
Hello
Hello
Hello
Hello
f
Hello
Hello
Hello
Hello
Hello