function grabSourceFile
{
cd /tmp/lmpsource
wget $1 > $LOG
baseName=$(basename $1)
tar -xvf $baseName > $LOG
cd $baseName
}
当我调用此函数时捕获的输出不会转到日志文件。输出重定向工作正常,直到我调用该函数。 $ LOG变量设置在文件的顶部。我尝试回应语句,他们不会打印。我猜这个函数捕获输出本身?如果是这样,如何将输出推送到文件而不是控制台。 (上面的wget打印到控制台,而函数内部的回显什么都不做。)
答案 0 :(得分:3)
如前所述,您正在两次写入相同的日志文件。您的函数正在记录'wget'的输出,然后使用tar命令覆盖该输出。
我自己,我喜欢在功能之外登录。这将减少您的日志文件被破坏的可能性。它还使功能代码保持整洁。
function grabSourceFile
{
cd /tmp/lmpsource
wget $1
baseName=$(basename $1)
tar -xvf $baseName
cd $baseName
} >> $LOG
或者只是这样做:
grabSourceFile >> $LOG
答案 1 :(得分:1)
重定向在函数内部和外部的工作方式相同。
您的问题可能是您需要一个大于符号的双倍而不是一个大于号的符号。即wget $1 >> $LOG
。 tar
命令的重定向会截断wget
的输出。
答案 2 :(得分:1)
我发现了问题。这是与wget。 wget有一个专门用于记录的选项,因为我猜它不能使用>重定向它的输出。 (有诅咒的东西。) 我的工作职能最终成为:
function grabSourceFile
{
cd /tmp/lmpsource
wget -a /tmp/lamps_install.log $1
baseName=$(basename $1)
tar -xvf $baseName >> $LOG
cd $baseName
}