分页: 1 / 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...

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

发表于 : 2009-10-22 21:01
O_O_BOT
irc <ivan___> say: 别打,用复制:)

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

发表于 : 2009-10-22 21:03
xiooli
[和]与其他字母之间一定要有空格。

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

发表于 : 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$ 
  

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

发表于 : 2009-10-22 21:11
思考者
xiooli 写了:[和]与其他字母之间一定要有空格。
人品爆发了,最初我也打了空格的,但是不能执行 :em23 刚才又仔细对照了下,竟然行了 :em02

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

发表于 : 2009-10-22 21:16
潇洒走一回
shell对语法要求很苛刻,要注意!
比如变量赋值的时候等号两边不允许有空格

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

发表于 : 2009-10-22 21:28
思考者
谢谢3楼和6楼的提醒,我才刚开始学shell,还是照着打的都错了 :em21 :em21 :em21 以后会注意的

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

发表于 : 2009-10-22 22:05
xzap
因为[就是test,test后面当然要空格啊。不是bash语法严苛,函数或者命令后面不带空格直接带参数什么语言都不行的吧

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

发表于 : 2009-10-22 22:24
darkfish
xzap 写了:因为[就是test,test后面当然要空格啊。
就是就是。
这个[ 就是 /usr/bin/[

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

发表于 : 2009-10-22 22:25
the_comer
貌似==两边也应该有空格。。。最好吧。。。 :em06

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

发表于 : 2009-10-22 22:29
潇洒走一回
xzap 写了:因为[就是test,test后面当然要空格啊。不是bash语法严苛,函数或者命令后面不带空格直接带参数什么语言都不行的吧
不管怎么说,从表面上看,确实够苛刻的啦

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

发表于 : 2009-10-23 12:26
c\nc
[ is a shell builtin
/usr/bin/[ is /usr/bin/[
[[ is a shell keyword

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

如果脚本只想用在 bash 上,[[ 是个不错的选择。

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

发表于 : 2009-10-25 18:05
O_O_BOT
多思考