使用install命令时如何正确重定向bas​​h脚本执行输出

时间:2019-10-21 22:26:00

标签: linux bash shell ubuntu

我已经编写了这个bash脚本示例,主要用于在远程环境上安装工具,因此我需要相当不错的日志记录。

在执行脚本期间,我想捕获到控制台窗口和文件的每个步骤,该步骤应包括有关执行的所有详细信息以及错误。

如何正确处理安装命令,目前无法捕获文件中的输出。 在这种情况下,建议的做法是什么? 我已经看到了使用其他变量来捕获输出的解决方案,但是我不知道如何使用它……

$output="$(comand 2>&1)"

谢谢

#!/bin/bash
logFile="/log.log"
>$logFile
printLog(){
    echo "[$(date "+%Y-%m-%d %H:%M:%S")]:" "$@" "Exit Code: $?" 2>&1 | tee -a $logFile
}
sampleFunc1(){
    printLog $LINENO "sampleFunc1"
    printLog $LINENO && mkdir "/dir1/dir2" && mkdir -p "/dir3/dir4" && mkdir -p "/dir5/dir6" && touch "file.txt" && cp "/file2.txt" "/dir1/dir2/"
    printLog $LINENO "sampleFunc1"
    printLog $LINENO ""
}
sampleFunc2(){
    printLog $LINENO "sampleFunc2"
    array=("/dir1/dir2" "/dir3/dir4" "/dir5/dir6")
    for i in "${array[@]}"
    do
        if [ -d "$i" ]
        then printLog $LINENO "exists $i"
        else printLog $LINENO "creating $i"
            mkdir -p "$i"
        fi
    done
    printLog $LINENO "sampleFunc2"
    printLog $LINENO""
}
sampleFunc3(){
    printLog $LINENO "sampleFunc3"
    printLog apt-get -qq install someApp
    printLog $LINENO "sampleFunc3"
    printLog $LINENO ""
}
sampleFunc1
sampleFunc2
sampleFunc3

1 个答案:

答案 0 :(得分:0)

嗯,您使用此代码片段执行远程任务吗?可以将输出捕获到一个文件中是正确的,但是我建议您针对此类事情使用远程执行框架。这样的工具会适当照顾工具的输出,并将解析后的输出提交到日志系统。

如果您不运行此代码段,则在调用“ apt”时会遇到特权升级方面的问题

相关问题