小编Lin*_*enG的帖子

在 bash tee 中,函数变量是本地的,我该如何转义?

我坚持使用 bash scipt,它应该同时写入标准输出和文件。我正在使用函数和其中的一些变量。每当我尝试将函数重定向到文件并使用 tee 在屏幕上打印时,我都无法使用我在函数中使用的变量,因此它们以某种方式成为本地变量。这是一个简单的例子:

#!/bin/bash
LOGV=/root/log

function var()
{
echo -e "Please, insert VAR value:\n"
read -re VAR
}
var 2>&1 | tee $LOGV
echo "This is VAR:$VAR"
Run Code Online (Sandbox Code Playgroud)

输出:

[root@testbox ~]# ./var.sh   
Please, insert VAR value:

foo
This is VAR:
[root@testbox ~]#
Run Code Online (Sandbox Code Playgroud)

提前致谢!

编辑: 回应@Etan Reisner 建议使用 var 2>&1 > >(tee $LOGV)

这种结构的唯一问题是日志文件不会收到所有内容......

[root@testbox~]# ./var.sh
Please, insert VAR value: 

foo 
This is VAR:foo
[root@testbox ~]# cat log 
Please, insert VAR value:
Run Code Online (Sandbox Code Playgroud)

linux bash tee bash-function

2
推荐指数
1
解决办法
3510
查看次数

标签 统计

bash ×1

bash-function ×1

linux ×1

tee ×1