免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2034 | 回复: 7
打印 上一主题 下一主题

帮我看看这个错误提示是什么意思??谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-12 16:03 |只看该作者 |倒序浏览
就是编了一个很简单的加法SHELL,实现功能是:先判断用户在运行SHELL时有没有直接输入加数和被加数参数,如果没有就提示用户输入
     declare -i c
       if ["$1" = ""] || ["$2" = ""];then
          echo please input the first data
          read a
          echo please input the second data
          read b
          c=${a}+$b
       else
          c=${1}+$2
       fi
        echo "the sum is c"

SHELL名为1


当我在运行SHELL时不把两数直接跟在后面时即$1和$2为空时(./1),按我的意图正常运行!
但当我在运行时输入两数或只输入一个时(./1  2  4 或 ./1  2)会分别出现如下错误提示:

./1: line 2: [1: command not found
./1: line 2: [1: command not found
the sum is :2  --------这个是结果,是对的,可为什么还有错误提示?????

./1: line 2: [1: command not found
这个接着会提示输入两数,输完后也是按照程序执行,结果也对的!可也有错误提示


当我在提示手动输入时如果不输入数字直接打两个回车,会出现如下错提示:
./1: line 7: +: syntax error: operand expected (error token is "+"


那些错误信息是什么意思啊??我要如何改SHELL???我是第一次写SHELL,请大家帮下忙!!谢谢

[ 本帖最后由 cq20081127 于 2006-9-12 16:47 编辑 ]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-09-12 17:38 |只看该作者
先,在[]内各项之间加个空格
PS:看一下shell的算术运算

[ 本帖最后由 寂寞烈火 于 2006-9-12 18:19 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-09-12 18:04 |只看该作者
看看十三问的第10问中间吧。

论坛徽章:
0
4 [报告]
发表于 2006-09-12 19:39 |只看该作者
咦,这个帖子似曾相识啊

论坛徽章:
0
5 [报告]
发表于 2006-09-13 10:48 |只看该作者
原帖由 寂寞烈火 于 2006-9-12 17:38 发表
先,在[]内各项之间加个空格
PS:看一下shell的算术运算


谢谢!加了空格后可以正常运行!

但当我把  if [ "$1" = "" ] || [ "$2" = "" ];then  改成  if [ -n ${1} ] || [ -n ${2} ];then  后如果不带参数运行(./1)可以正常运行,但当我加了变成(./1  2  3或者 ./1  2  3  6)时程序判断还是认为没有输入 $1和 $2  这是为什么啊???如下:


[root@SHIYAN /]# ./2 3 4
please input the first data
3
please input the second data
4
the sum is :7


[root@SHIYAN /]# ./2 3 4  5
please input the first data
3
please input the second data
4
the sum is :7

还有当我要求输入两个数时,如果直接回车会出现如下错误提示:./1: line 8: +: syntax error: operand expected (error token is "+")
这又是什么意思啊???

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2006-09-13 10:50 |只看该作者
ex:

  1. #!/bin/bash
  2. (($#<1))&&(echo input one:;read a;echo input two;read b;echo sum=$((a+b)))||(for i in $@;do ((sum+=i));done;echo sum=$sum)
复制代码

论坛徽章:
0
7 [报告]
发表于 2006-09-13 13:49 |只看该作者
=  != ==

论坛徽章:
0
8 [报告]
发表于 2006-09-13 13:49 |只看该作者
= ?
!
==
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP