当前位置: 技术问答>linux和unix
sh -x 调试脚本的问题
来源: 互联网 发布时间:2017-03-04
本文导语: 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 b...
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应该是一样的啊,如果不一样那么调试还有什么作用呢?
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结果是否一样
脚本开头使用
#! /bin/sh
试试与$ sh -x test bad结果是否一样