首页 > 其他 > 详细

sh执行shell脚本语法错误

时间:2014-02-22 09:32:06      阅读:281      评论:0      收藏:0      [点我收藏+]

今天调试一个脚本,用./的方式直接运行脚本没有发现任何问题,但是当我用如下命令打印调试信息的时候就会发现各种问题:

sh -x sample.sh

下面给出sample.sh

#!/bin/bash

hello(){
    echo "Hello, this is a function."
}

if [ ! -z $1 ] && [ $1 == ‘1‘ ] ; then
    hello
else
    echo "no argument."
fi

通过sh执行发现报如下错误:

sample.sh: 3: sample.sh: Syntax error: "(" unexpected
但是用./sample.sh方式执行却不会发生任何错误,也就是说脚本的自身执行是没有问题的,执行sh程序的时候才会有语法错误。


其实语法错误的原因在于两次执行的不是同一种shell,在用./sample的方式执行的时候,系统会使用脚本首行声明的/bin/bash来解释脚本,而用sh方式执行的时候,系统会调用sh这个程序,在我的机器上看一下sh这个程序的来源:

snow@snow-desktop:~$ ll `which sh`
lrwxrwxrwx 1 root root 4 11月  9 10:17 /bin/sh -> dash*

表明sh实际上是dash,和./sample.sh方式使用的并不是同一种shell,所以才会发生奇怪的语法错误。

sh执行shell脚本语法错误

原文:http://blog.csdn.net/w_xue/article/details/19497583

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!