#!/bin/bash

#set -x 打开跟踪,set +x 关闭跟踪。对于复杂的脚本来说这个命令很有用,可以知道命令到哪里出了  #问题

set -x                         #打开跟跟踪

echo "hello ,welcome"          #第一条命令

set +x                         #关闭跟踪

echo "test set -x end"         第二条命令




#下面是执行结果

[root@sql tmp]# ./setx        #执行这个脚本,脚本名为setx

+ echo 'hello ,welcome'       #执行第一条命令

hello ,welcome                #执行结果输出

+ set +x                      #关闭跟踪

test set -x end               #第二条命令结果输出 ,这里并没出现被跟踪的命令,因为跟踪命

[root@sql tmp]#                 令关闭了。



除了上面的在脚本中加入命令的方法,还可以在执行时加上参数来跟踪脚本执行情况,

如:

[root@lyang tmp]# sh -n while #在执行时加上 -n 参数,检查脚本语法有没有问题,没有面不显示

[root@lyang tmp]# sh -v whil  #在执行时加上 -v参数,在执行脚本前在屏幕上显示脚本内容

#!/bin/bash

#用while打印1到10

a=1

while (( $a <= 10 ))

do

echo $a

let a=a+1

done

1

2

3

4

5

6

7

8

9

10

echo "test while end "

test while end



[root@lyang tmp]# sh -x while  #在执行时加上 -x 参数时会跟踪每次执行

+ a=1

+ ((  1 <= 10  ))

+ echo 1

1

+ let a=a+1

+ ((  2 <= 10  ))

+ echo 2

2

+ let a=a+1

+ ((  3 <= 10  ))

+ echo 3

3

+ let a=a+1

+ ((  4 <= 10  ))

+ echo 4

4

+ let a=a+1

+ ((  5 <= 10  ))

+ echo 5

5

+ let a=a+1

+ ((  6 <= 10  ))

+ echo 6

6

+ let a=a+1

+ ((  7 <= 10  ))

+ echo 7

7

+ let a=a+1

+ ((  8 <= 10  ))

+ echo 8

8

+ let a=a+1

+ ((  9 <= 10  ))

+ echo 9

9

+ let a=a+1

+ ((  10 <= 10  ))

+ echo 10

10

+ let a=a+1

+ ((  11 <= 10  ))

+ echo 'test while end '

test while end