Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash中的while循环_Bash_While Loop - Fatal编程技术网

bash中的while循环

bash中的while循环,bash,while-loop,Bash,While Loop,我不熟悉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

我不熟悉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
n=$1
转移
echo“打印您的姓名$n次”
计数=1

对于((i=1;i一个问题是在括号中需要空格,以便
bash
知道它们是单独的单词。也就是说,更改此选项:

while ["$count" -le "$n"]
为此:

while [ "$count" -le "$n" ]
另一个原因是:

count='expr[$count+1]'
实际上,将变量
count
设置为特定字符串
expr[$count+1]
。您的意思似乎是:

count=$((count+1))

这会将
count
的值增加1。

一个问题是括号周围需要空格,以便
bash
知道它们是单独的单词。也就是说,更改此选项:

while ["$count" -le "$n"]
为此:

while [ "$count" -le "$n" ]
另一个原因是:

count='expr[$count+1]'
实际上,将变量
count
设置为特定字符串
expr[$count+1]
。您的意思似乎是:

count=$((count+1))
这会将计数的值增加1。

尝试以下操作:

count=1
while [ "$count" -le "$n" ]
do
echo $@ -$i
count=`expr $count + 1`
done
while
条件中需要有一个空格。
count
的增量需要后引号,而不是一个引号,以执行命令并将其分配给变量。

尝试以下操作:

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

while
条件中需要有一个空格。
count
的增量需要后引号,而不是单个引号,以执行命令并将其分配给变量。

增量变量的另一种方法:

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

增加变量的另一种方法:

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

[
实际上是指向
/bin/test
的链接(好吧,在
bash
中,它是一个内置的,但它就是从那里来的)。因此
[
是一个词(就像
ls
),这就是它需要空间的原因。@BenJackson:我认为即使没有这个,也需要空间;请注意
[[
也需要空格,尽管它在其他方面很神奇。嘿,非常感谢你提供的信息,但我不明白的是count='expr[$count+1]'在for循环中工作,但在while循环中不工作,你能告诉我为什么吗?谢谢。@surpavan:它在
for
-循环中不工作;但是
for
-循环中没有任何内容使用
count
的值,因此它在那里不工作并不重要。
[
实际上是指向
/bin/test
的链接(好的,在
bash
中,它是一个内置的,但它就是从这里来的。)因此
[
是一个词(就像
ls
),这就是它需要空间的原因。@BenJackson:我认为即使没有空间,也需要空间;注意
[[
也需要空格,尽管它在其他方面很神奇。嘿,非常感谢你提供的信息,但我不明白的是count='expr[$count+1]'在for循环中工作,但在while循环中不工作,你能告诉我为什么吗?谢谢。@surpavan:它在
for
-循环中不工作;但是
for
-循环中没有任何东西使用
count
的值,因此它在那里不工作并不重要。