日期:2014-05-16  浏览次数:20681 次

sh -x 调试脚本的问题
test脚本如下:
function hi
{
  echo "in funciton $0 $1"
}

echo "start..."
hi good

但用sh -x test调试和运行./test和很大差异,不知为什么。

$ sh -x test bad
+ function hi
test: 1: function: not found
+ echo in funciton test bad
in funciton test bad
+ echo start...
start...
+ hi good
test: 1: hi: not found

========================

$ ./test bad
start...
in funciton ./test good

我的问题是为什么会出现几乎完全不同的显示呢?
1 首先输出居然就完全不一样,前者是in funciton test bad,后者是in funciton ./test good,一个是bad,一个是good。
2 输出顺序不一样,前者先输出in funciton test bad,再输出start...,后者先输出start...,在输出in funciton ./test good。
3 前者输出中有test: 1: function: not found之类的东东,而后者没有

我想sh -x test bad和./test bad应该是一样的啊,如果不一样那么调试还有什么作用呢?

------解决方案--------------------
$ bash -x test.sh bad
脚本开头使用
#! /bin/sh
试试与$ sh -x test bad结果是否一样