如何在shell中重新组合命令以避免重复重定向?

时间:2012-05-18 09:02:41

标签: shell

我有一个脚本,我将三个东西输出到一个文件中。我只想给>运营商打电话一次。有没有办法描述一块指令?我应该使用功能吗?

#!/bin/sh

for i in $(ls src)
 do
  f=${i%.*}
  echo 'first bit' > dist/$i.htm
  perl myScriptThatOutputsSecondBit.pl >> dist/$i.htm
  echo 'third bit' >> dist/$i.htm
 done

2 个答案:

答案 0 :(得分:3)

使用compound/group命令:

在current-shell中运行它,

 {echo 'first bit';perl myScriptThatOutputsSecondBit.pl;echo 'third bit';} > dist/$i.htm 


要在子shell中运行,

 (echo 'first bit';perl myScriptThatOutputsSecondBit.pl;echo 'third bit') > dist/$i.htm 

答案 1 :(得分:0)

编写一个简单的日志功能,这样会更有效率。 e.g。

log(){
   echo $1 >> dist/$i.htm
}

然后从脚本中调用它:

for i in $(ls src)
do
    f=${i%.*}
    log 'first bit'
    perl myScriptThatOutputsSecondBit.pl >> dist/$i.htm
    log 'third bit'
done