红联Linux门户
Linux帮助

请问用sh命令执行shell脚本和为shell脚本加上执行权限执行有什么不同?

发布时间:2010-07-01 14:32:05来源:红联作者:dfdongfang402
请问用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脚本执行方式有什么不同?
文章评论

共有 5 条评论

  1. dfdongfang402 于 2010-07-02 18:22:01发表:

    受教了,谢谢两位的回答 !

  2. 相思爱文 于 2010-07-01 22:28:53发表:

    [i=s] 本帖最后由 相思爱文 于 2010-7-1 22:32 编辑 [/i]

    我用各种方法运行过,都没问题。
    用bash命令试试

    第一行为
    #!/bin/bash
    直接运行,就是指用bash命令

    #!/bin/sh
    就是用sh

    #!/bin/more
    就是用more

  3. acrofox 于 2010-07-01 22:11:29发表:

    因为 sh 和 bash 不是同一个东西,你用 bash 加脚本文件名执行就得到同样的结果了。

  4. dfdongfang402 于 2010-07-01 17:29:06发表:

    这个脚本名称为 sh08.sh
    如果我在控制台输入:sh sh08.sh parameter
    就会出现“[: 10: parameter: unexpected operator” 这个错误
    如果进入sh08.sh所在目录,输入:./sh08.sh parameter
    就正常

  5. Courage 于 2010-07-01 14:57:20发表:

    不懂