分页: 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 写了:[和]与其他字母之间一定要有空格。
人品爆发了,最初我也打了空格的,但是不能执行

刚才又仔细对照了下,竟然行了

Re: 非常简单的一个脚本,照着书打的,但是却错误
发表于 : 2009-10-22 21:16
由 潇洒走一回
shell对语法要求很苛刻,要注意!
比如变量赋值的时候等号两边不允许有空格
Re: 非常简单的一个脚本,照着书打的,但是却错误
发表于 : 2009-10-22 21:28
由 思考者
谢谢3楼和6楼的提醒,我才刚开始学shell,还是照着打的都错了

以后会注意的
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
貌似==两边也应该有空格。。。最好吧。。。

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
多思考