bash while循环不合作?

问题描述 投票:0回答:1

我正在学习脚本,并创建了edit.sh来制作一个简单的while循环,如下所示

#!/bin/sh

a=0 

while [ $a -lt 10 ] 
do
echo $a
a='expr $a + 1'
done

我上网查过这个问题,大部分时间都是间距问题......但我已经检查并重新写了10次代码,但我总是得到的是

.edit.sh:第5行。[: 太多参数。

我不知道我的生活中我做错了什么,它可能真的很愚蠢,我只是看不到它,任何帮助aprecciated。

bash while-loop sh
1个回答
3
投票

根据你的代码,你是在给字面字符串赋值 expr $a + 1 名下 a 的结果,而不是命令--------的结果。expr 0 + 1. 随着 $a 未加引号,然后您可以尝试执行以下命令 [ expr $a + 1 -lt 10 ]这确实有太多的争论。

眼前的问题是,你把反引号误认为是单引号,你本来想写的是......。

a=`expr $a + 1`

但是,几乎不应该使用反引号,而应该使用 $(...) 构造,用于命令替换。

a=$(expr $a + 1)

然而,不需要使用 expr 命令,用于在POSIX兼容的shell中进行算术运算。使用 $((...)) 而不是。

a=$((a + 1))
© www.soinside.com 2019 - 2024. All rights reserved.