【问题标题】:stdoutt and stderr redirection using tee in shell script在 shell 脚本中使用 tee 进行 stdout 和 stderr 重定向
【发布时间】:2012-10-08 00:17:50
【问题描述】:

我正在尝试使用以下代码将输出/错误打印到控制台和日志文件。

fun1(){

echo "inside fun1"

乐趣2

var=5

}

fun2(){

echo "inside fun2"

}

乐趣1 2>&1 | tee -a testlog.txt

echo $var # 打印空值

有什么方法可以在 fun1 执行后将 var 的值打印为 5?我需要控制台和日志文件中的输出。 fun1 也应该只执行一次。

请帮忙。

【问题讨论】:

  • 您同时提出了几个(独立的)问题。考虑发布一些单独的问题。
  • 我唯一关心的是显示 $var 的值

标签: function unix stdout io-redirection tee


【解决方案1】:

如果你把它写成一个 bash 脚本是可能的:

#!/bin/bash

exec 3>&1 1> >(tee testlog.txt) 2>&1

fun1(){
    echo 'inside fun1'
    fun2
    var=5
}

fun2(){
    echo 'inside fun2'
}

fun1
echo "$var"

如果您想将其作为普通的 bourn shell 执行,可以将其分成两个脚本:

script2.sh:

#!/bin/sh

fun1(){
    echo 'inside fun1'
    fun2
    var=5
}

fun2(){
    echo 'inside fun2'
}

fun1
echo $var

和script1.sh:

#!/bin/sh

script2.sh 2>&1 | tee testlog.txt

【讨论】:

    猜你喜欢
    • 2012-03-09
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2015-08-18
    • 2014-07-22
    • 2021-08-19
    相关资源
    最近更新 更多