经常会有人问:Shell中如何将自己的脚本中的每条命令的执行结果放置到自定义的日志文件中? 默认情况下,每条命令执行后,标准输出会定向到屏幕输出,标准错误也会定向到屏幕输出,但屏幕一晃而过,你也就看不到了,如果使用>或者>>,即重定向或者追加重定向是可以将每条命令的输出定位到日志文件中的,但是要将所有的命令的输出结果定向到一个文件就必须每条命令重定向一次,非常之不方便!使用tee命令不过是,定位,追踪代码的时候方便。还是达不到目的,这个时候使用exec命令非常方便。
比如:
#!/bin/bash set -xv exec 1>mylog 2>&1 free df -h pwd
第一行是shebang,告诉shell便器使用/bin目录的bash来编译脚本。
第二行是打开模式开关 -v:显示shell所读取的输入值。-x:执行指令后,会先显示该指令及所下的参数
第三行exec命令用于调用并执行指令的命令。
- exec命令通常用在shell脚本程序中,可以调用其他的命令
- 1> mylog 是将标准输出重定向到mylog文件中
- 2>&1 是将标准错误定向到标准输入,一起定向到mylog中,也就是说,标准输入和标准输出都会到mylog文件中
执行上面的脚本后,就会将后面三条命令free,df -h,pwd命令的执行结果全部生产到mylog文件中,也就达到了将所有命令执行结果保存到一个文件的目的,非常之方便!