请问用sh命令执行shell脚本和为shell脚本加上执行权限执行有什么不同?
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
if [ -z "$1" ]; then
echo "You must input a parameter"
elif [ "$1" == "hello" ]; then
echo "Hello, how are you ?"
else
echo "you can only input 'hello' as parameter"
fi
为什么这段脚本用sh命令执行的时候会报“[: unexpected operator”错误呢? 就是这行代码“ [ "$1" == "hello" ]; ”报的错误
而我将这个脚本加上可执行权限直接执行就没有问题,我想问一下这两种shell脚本执行方式有什么不同?


dfdongfang402 于 2010-07-02 18:22:01发表:
受教了,谢谢两位的回答 !
相思爱文 于 2010-07-01 22:28:53发表:
[i=s] 本帖最后由 相思爱文 于 2010-7-1 22:32 编辑 [/i]
我用各种方法运行过,都没问题。
用bash命令试试
第一行为
#!/bin/bash
直接运行,就是指用bash命令
#!/bin/sh
就是用sh
#!/bin/more
就是用more
acrofox 于 2010-07-01 22:11:29发表:
因为 sh 和 bash 不是同一个东西,你用 bash 加脚本文件名执行就得到同样的结果了。
dfdongfang402 于 2010-07-01 17:29:06发表:
这个脚本名称为 sh08.sh
如果我在控制台输入:sh sh08.sh parameter
就会出现“[: 10: parameter: unexpected operator” 这个错误
如果进入sh08.sh所在目录,输入:./sh08.sh parameter
就正常
Courage 于 2010-07-01 14:57:20发表:
不懂