私は、標準出力とファイルの両方に書き込む必要があるbash sciptにこだわっています。関数とその中にいくつかの変数を使用しています。関数をファイルにリダイレクトして画面に印刷しようとすると、関数で使用した変数を使用できないため、何らかの形でローカルになります。簡単な例を次に示します。
#!/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"
出力:
[root@testbox ~]# ./var.sh
Please, insert VAR value:
foo
This is VAR:
[root@testbox ~]#
前もって感謝します!
編集:
使用する@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: