非常简单的一个脚本,照着书打的,但是却错误

sh/bash/dash/ksh/zsh等Shell脚本
回复
思考者
帖子: 294
注册时间: 2009-07-05 19:43

非常简单的一个脚本,照着书打的,但是却错误

#1

帖子 思考者 » 2009-10-22 20:58

代码: 全选

 if ["$1"=="hello"]; then
          echo "Hello,how are you?"
elif ["$1"==" "]; then
          echo "You must input parameters, ex> $0 someword"
else
          echo "The only parameter is 'hello'"
fi
功能是show "Hello" from $1...
-----寂寞的存在,孤独的思考----
头像
O_O_BOT
帖子: 2461
注册时间: 2009-05-20 19:32

Re: 非常简单的一个脚本,照着书打的,但是却错误

#2

帖子 O_O_BOT » 2009-10-22 21:01

irc <ivan___> say: 别打,用复制:)
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: 非常简单的一个脚本,照着书打的,但是却错误

#3

帖子 xiooli » 2009-10-22 21:03

[和]与其他字母之间一定要有空格。
思考者
帖子: 294
注册时间: 2009-07-05 19:43

Re: 非常简单的一个脚本,照着书打的,但是却错误

#4

帖子 思考者 » 2009-10-22 21:06

O_O_BOT 写了:irc <ivan___> say: 别打,用复制:)
复制?不行的啊~~

另外,具体的脚本内容和执行情况也附上:

代码: 全选

cloudy@cloudy-laptop:~/scripts$ cat sh08.sh
#!/bin/bash - 
#===============================================================================
#
#          FILE:  sh08.sh
# 
#         USAGE:  ./sh08.sh 
# 
#   DESCRIPTION:  Show "Hello" from $1....
# 
#       OPTIONS:  ---
#  REQUIREMENTS:  ---
#          BUGS:  ---
#         NOTES:  ---
#        AUTHOR:   (), cloudy
#       COMPANY:  
#       VERSION:  1.0
#       CREATED:  10/22/2009 08:47:25 PM CST
#      REVISION:  ---
#===============================================================================
if ["$1"=="hello"]; then
          echo "Hello,how are you?"
elif ["$1"==" "]; then
          echo "You must input parameters, ex> $0 someword"
else
          echo "The only parameter is 'hello'"
fi
set -o nounset                              # Treat unset variables as an error


cloudy@cloudy-laptop:~/scripts$ ./sh08.sh hello
./sh08.sh: line 20: [hello==hello]: command not found
./sh08.sh: line 22: [hello== ]: command not found
The only parameter is 'hello'
cloudy@cloudy-laptop:~/scripts$ 
  
-----寂寞的存在,孤独的思考----
思考者
帖子: 294
注册时间: 2009-07-05 19:43

Re: 非常简单的一个脚本,照着书打的,但是却错误

#5

帖子 思考者 » 2009-10-22 21:11

xiooli 写了:[和]与其他字母之间一定要有空格。
人品爆发了,最初我也打了空格的,但是不能执行 :em23 刚才又仔细对照了下,竟然行了 :em02
-----寂寞的存在,孤独的思考----
头像
潇洒走一回
帖子: 735
注册时间: 2009-05-20 21:43

Re: 非常简单的一个脚本,照着书打的,但是却错误

#6

帖子 潇洒走一回 » 2009-10-22 21:16

shell对语法要求很苛刻,要注意!
比如变量赋值的时候等号两边不允许有空格
思考者
帖子: 294
注册时间: 2009-07-05 19:43

Re: 非常简单的一个脚本,照着书打的,但是却错误

#7

帖子 思考者 » 2009-10-22 21:28

谢谢3楼和6楼的提醒,我才刚开始学shell,还是照着打的都错了 :em21 :em21 :em21 以后会注意的
-----寂寞的存在,孤独的思考----
头像
xzap
帖子: 256
注册时间: 2006-08-24 21:25

Re: 非常简单的一个脚本,照着书打的,但是却错误

#8

帖子 xzap » 2009-10-22 22:05

因为[就是test,test后面当然要空格啊。不是bash语法严苛,函数或者命令后面不带空格直接带参数什么语言都不行的吧
头像
darkfish
帖子: 90
注册时间: 2009-09-18 10:03
来自: 北京
联系:

Re: 非常简单的一个脚本,照着书打的,但是却错误

#9

帖子 darkfish » 2009-10-22 22:24

xzap 写了:因为[就是test,test后面当然要空格啊。
就是就是。
这个[ 就是 /usr/bin/[
头像
the_comer
帖子: 264
注册时间: 2009-07-08 17:33

Re: 非常简单的一个脚本,照着书打的,但是却错误

#10

帖子 the_comer » 2009-10-22 22:25

貌似==两边也应该有空格。。。最好吧。。。 :em06
头像
潇洒走一回
帖子: 735
注册时间: 2009-05-20 21:43

Re: 非常简单的一个脚本,照着书打的,但是却错误

#11

帖子 潇洒走一回 » 2009-10-22 22:29

xzap 写了:因为[就是test,test后面当然要空格啊。不是bash语法严苛,函数或者命令后面不带空格直接带参数什么语言都不行的吧
不管怎么说,从表面上看,确实够苛刻的啦
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51

Re: 非常简单的一个脚本,照着书打的,但是却错误

#12

帖子 c\nc » 2009-10-23 12:26

[ is a shell builtin
/usr/bin/[ is /usr/bin/[
[[ is a shell keyword

还是有区别的,bash 执行的顺序是:
别名 -> 关键字 -> 函数 -> 内部命令 -> 外部命令

如果脚本只想用在 bash 上,[[ 是个不错的选择。
头像
O_O_BOT
帖子: 2461
注册时间: 2009-05-20 19:32

Re: 非常简单的一个脚本,照着书打的,但是却错误

#13

帖子 O_O_BOT » 2009-10-25 18:05

多思考
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
回复