淘先锋技术网

首页 1 2 3 4 5 6 7

通常情况下,我会写一个脚本来处理数据,脚本中难免会有错误的地方,如果能记录下真实运行的命令,就能检查是否有bug存在,也便于以后查阅。因此,我在网上搜索到了一些解决方法。

(1) 在脚本中添加set +o xtrace/sex -x 或使用-x选项执行脚本 bash -x script.sh

上述三种方式都可以在执行脚本的同时,输出运行的命令,并在命令前用+标记。比如:

bash -x script.sh > stdout.log 2> cmd.log

可以把脚本的输出保存在stdout.log文件中,把运行过的命令保存在cmd.log中。

(2) 另一种思路是把要运行的命令当成一个字符串或者数组,分成两步来实现输出命令和执行命令的目的。比如:
myArray=(some commands)

#将要执行的命令保存成数组myArray
echo “${myArray[@]}”

#输出要执行的命令
“${myArray[@]}”

#执行要执行的命令
又比如:
myString=‘some commands’

#将要执行的命令保存成数组myString
echo $myString

#输出要执行的命令
eval $myString

#执行要执行的命令

参考:(1)https://stackoverflow.com/questions/5750450/bash-print-each-command-before-executing?noredirect=1&lq=1
(2)https://stackoverflow.com/questions/2853803/in-a-shell-script-echo-shell-commands-as-they-are-executed
(3)https://askubuntu.com/questions/763332/execute-a-command-stored-into-a-variable
(4)https://stackoverflow.com/questions/2005192/how-to-execute-a-bash-command-stored-as-a-string-with-quotes-and-asterisk
(5)http://mywiki.wooledge.org/BashFAQ/050