当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 这个if语句怎么无法比较数字大小?
帖子发表于 : 2017-07-17 21:02 

注册: 2015-12-23 16:20
帖子: 97
系统: ubuntu 16.04
送出感谢: 1
接收感谢: 0 次
如题,

一个很简单的if判断语句,

但是就是不成。

不知道哪里出问题了。

语句如下:

for ((i=1;i<=10;i++))
do
if $i=1
echo $i time
then
echo $i times
fi
done

返回如下,真稀奇:

bash: 1=1: 未找到命令
1 time
1 times
bash: 2=1: 未找到命令
2 time
2 times
bash: 3=1: 未找到命令
3 time
3 times
bash: 4=1: 未找到命令
4 time
4 times
bash: 5=1: 未找到命令
5 time
5 times
bash: 6=1: 未找到命令
6 time
6 times
bash: 7=1: 未找到命令
7 time
7 times
bash: 8=1: 未找到命令
8 time
8 times
bash: 9=1: 未找到命令
9 time
9 times
bash: 10=1: 未找到命令
10 time
10 times

谁知道这个应该如何写?

后来我又换成了

if $i eq 1

但是还是不成,

不知道哪里出问题了。

希望高手可以看看。

谢谢!!


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 这个if语句怎么无法比较数字大小?
帖子发表于 : 2017-07-17 22:01 
头像

注册: 2008-09-18 13:11
帖子: 2633
送出感谢: 1
接收感谢: 418
问题就在你根本不会shell的基本语法就想当然瞎写
代码:
       if list; then list; [ elif list; then list; ] ... [ else list; ] fi
              The if list is executed.  If its exit status is zero, the then list is executed.  Otherwise, each elif list  is  executed
              in  turn,  and if its exit status is zero, the corresponding then list is executed and the command completes.  Otherwise,
              the else list is executed, if present.  The exit status is the exit status of the last command executed, or  zero  if  no
              condition tested true.

代码:
       [[ expression ]]
              Return a status of 0 or 1 depending on the evaluation of the conditional expression expression.  Expressions are composed
              of the primaries described below under CONDITIONAL EXPRESSIONS.  Word splitting and pathname expansion are not  performed
              on the words between the [[ and ]]; tilde expansion, parameter and variable expansion, arithmetic expansion, command sub‐
              stitution, process substitution, and quote removal are performed.  Conditional operators such as -f must be  unquoted  to
              be recognized as primaries.

代码:
       test expr
       [ expr ]
              Return a status of 0 (true) or 1 (false) depending on the evaluation of the conditional expression expr.   Each  operator
              and  operand  must  be  a separate argument.  Expressions are composed of the primaries described above under CONDITIONAL
              EXPRESSIONS.  test does not accept any options, nor does it accept and ignore an argument of -- as signifying the end  of
              options.


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 这个if语句怎么无法比较数字大小?
帖子发表于 : 2017-07-24 17:11 

注册: 2015-12-23 16:20
帖子: 97
系统: ubuntu 16.04
送出感谢: 1
接收感谢: 0 次
astolia 写道:
问题就在你根本不会shell的基本语法就想当然瞎写
代码:
       if list; then list; [ elif list; then list; ] ... [ else list; ] fi
              The if list is executed.  If its exit status is zero, the then list is executed.  Otherwise, each elif list  is  executed
              in  turn,  and if its exit status is zero, the corresponding then list is executed and the command completes.  Otherwise,
              the else list is executed, if present.  The exit status is the exit status of the last command executed, or  zero  if  no
              condition tested true.

代码:
       [[ expression ]]
              Return a status of 0 or 1 depending on the evaluation of the conditional expression expression.  Expressions are composed
              of the primaries described below under CONDITIONAL EXPRESSIONS.  Word splitting and pathname expansion are not  performed
              on the words between the [[ and ]]; tilde expansion, parameter and variable expansion, arithmetic expansion, command sub‐
              stitution, process substitution, and quote removal are performed.  Conditional operators such as -f must be  unquoted  to
              be recognized as primaries.

代码:
       test expr
       [ expr ]
              Return a status of 0 (true) or 1 (false) depending on the evaluation of the conditional expression expr.   Each  operator
              and  operand  must  be  a separate argument.  Expressions are composed of the primaries described above under CONDITIONAL
              EXPRESSIONS.  test does not accept any options, nor does it accept and ignore an argument of -- as signifying the end  of
              options.



这个非常感谢,

目前写出来了

应该是
if [$i == 1}
then
echo $i time
else
echo $i times
fi


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译