wade@V1088:~$ cat b.sh
#!/bin/bash dir=`pwd` dir=$dir'/' for f in `ls *.png` do echo $dir$f done
看每一行代码的执行:
wade@V1088:~$ bash -x b.sh ++ pwd + dir=/home/wade + dir=/home/wade/ ++ ls chrome_1407299385726.png chrome_1427299385726.png + for f in '`ls *.png`' + echo /home/wade/chrome_1407299385726.png /home/wade/chrome_1407299385726.png + for f in '`ls *.png`' + echo /home/wade/chrome_1427299385726.png
进一步,看具体执行的代码与行号对应:
wade@V1088:~$ export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: ' wade@V1088:~$ bash -x b.sh ++b.sh:2:: pwd +b.sh:2:: dir=/home/wade +b.sh:3:: dir=/home/wade/ ++b.sh:8:: ls chrome_1407299385726.png chrome_1427299385726.png +b.sh:4:: for f in '`ls *.png`' +b.sh:7:: echo /home/wade/chrome_1407299385726.png /home/wade/chrome_1407299385726.png +b.sh:4:: for f in '`ls *.png`' +b.sh:7:: echo /home/wade/chrome_1427299385726.png
指定脚本的部分去跑详细的行号,其余的忽略:
wade@V1088:~$ cat b.sh #!/bin/bash dir=`pwd` dir=$dir'/' #this line above won't log out set -x for f in `ls *.png` do echo $dir$f done set +x #the follow line won't log out echo 'end' abc='new var'
运行输出:
wade@V1088:~$ ./b.sh ++./b.sh:10:: ls chrome_1407299385726.png chrome_1427299385726.png +./b.sh:6:: for f in '`ls *.png`' +./b.sh:9:: echo /home/wade/chrome_1407299385726.png /home/wade/chrome_1407299385726.png +./b.sh:6:: for f in '`ls *.png`' +./b.sh:9:: echo /home/wade/chrome_1427299385726.png /home/wade/chrome_1427299385726.png +./b.sh:11:: set +x end