阿壳位重定向
下面是我们如何做外壳通常重定向
$ ./pgm.sh args >out.txt 2>err.txt
我想修改一下,运行如下
$ ./pgm.sh args
这项规定,输出和错误应该去一些文件名指定参数计算的基础上内pgm.sh。 一个典型案例可以当日期为argS的一部分。 所以,你想输出到去说/你的/目录/ pgm_out_YYYYMMDD.txt 1
重定向问题的方法与标准N>file.txt即关联文件描述符N对file.txt,是它的过程只适用于新分叉过程而不是当前的。
所以
$ echo hi 1>out.txt ; echo hii将派喜out.txt但将打印的HII到stdout。 2
这是exec来到我们的救援。 如果我们加上exec 1>somefile.txt然后从脚本输出其余将用于somefile.txt
$。/ test.sh将重定向喜以及电离氢到out.txt
$ cat test.sh
#!/usr/bin/env bash
exec 1>out.txt
echo hi
echo hii
同样重定向标准输出和标准错误,我们会做这样的事情
cat test2.sh
exec 1>out.txt
exec 2>err.txt
echo out text
echo 1>&2 err text
somenoneexitent command
ls -ld /tmp
现在回来了壳原点文件从内部重定向到一些,让我们说方案计算的输出文件的文件名中的一些变量,我们可能只是做exec 1>$OUTFILE
这解决了当前的问题。 但是你可能要经过下面的例子实现的随机访问在shell脚本文件'。 例子是从这里
echo 1234567890 > File # Write string to "File".
exec 3<> File # Open "File" and assign fd 3 to it.
read -n 4 <&3 # Read only 4 characters.
echo -n . >&3 # Write a decimal point there.
exec 3>&- # Close fd 3.
cat File # ==> 1234.67890
带评论,此代码是自我解释性。
-
1它也可以做的$ ./pgm.sh args >pgm_out`date +%Y%m%d` ,但思想是生成这个文件的名称本身就方案的一些逻辑基础研究。
2 out.txt 1 1>是多余的,但在这里澄清,我们正在调整峡湾1



































