如果在脚本中重定向许多数据,那么重定向每个echo语句就不太方便了,这种情况下,可以使用exec命令通知shell脚本执行期间重定向特定的文件描述符
文件名为: sh12.sh
#!/bin/bash# redirecting all output to a fileexec 1>testoutecho "This is a test of redirecting all output"echo "from a script to another file."echo "without haviing to redirect every individual line"
exec命令启动一个新的shell,并将STDOUT文件描述重定向到一个文件,所有定向到STDOUT的脚本输出都将重定向到这个文件
运行 sh sh12.sh ,你会发现没输出任何东西,然后查看testout文件, cat testout
输出:
This is a test of redirecting all outputfrom a script to another file.without haviing to redirect every individual line
然后将错误信息和正确信息分别重定向不同的文件
文件名 sh13.sh
#!/bin/bash# redirecting output to different locationsexec 2>testerrorecho "This is the start of the script"echo "now reidirecting all output to another location"exec 1>testoutecho "This output should go to the testout testout file"echo "but this should go to the testerror file" >&2
运行 sh sh13.sh
输出:
This is the start of the scriptnow reidirecting all output to another location
查看testout文件的内容 cat testout
输出: This output should go to the testout testout file
查看testerror文件的内容 cat testrror
输出: but this should go to the testerror file