永久重定向
如果在脚本中重定向许多数据,那么重定向每个echo语句就不太方便了,这种情况下,可以使用exec命令通知shell脚本执行期间重定向特定的文件描述符
文件名为: sh12.sh
#!/bin/bash # redirecting all output to a file exec 1>testout echo "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 output from a script to another file. without haviing to redirect every individual line
然后将错误信息和正确信息分别重定向不同的文件
文件名 sh13.sh
#!/bin/bash # redirecting output to different locations exec 2>testerror echo "This is the start of the script" echo "now reidirecting all output to another location" exec 1>testout echo "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 script
now 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