我将BASH脚本输出重定向到使用变量生成的日志文件中,依此类推。 没问题。 我做了:
exec 6>&1
exec 7>&2
exec 2>&1
exec > /root/backup/report_singoli/$PNAME/$FNAME.log
它完美无瑕。
问题是有时候我希望我的输出在屏幕上的“普通”标准输出中,所以我在描述符6中回显输出,如:
echo "ciao prima" >&6
哪个很好。
从一条线到另一条线,它不再起作用了。 我做了一些调试,结果就出现了问题:
echo "THIS WORKS FINE" >&6
if [ ! -f "/root/tmpfs/$PNAME/backup_end_time.txt" ]; then
if [ -f "/root/tmpfs/$PNAME/backup_start_time.txt" ]; then
echo ""
echo "Il backup per l'ambiente $$FNAME - $ENVAR non è ancora completato! Salto questo ambiente..."
echo ""
sleep 1s
return 0
else
echo ""
echo "Sembra che l'ambiente $FNAME - $ENVAR non stia facendo alcun tipo di backup..."
echo ""
sleep 1s
return 0
fi
else
echo ""
echo "File semaforo verde, procediamo..."
echo ""
sleep 1s
fi
echo "THIS IS NOT WORKING" >&6
我想知道那个街区有什么问题。
从那一点开始,没有输出适用于>& 6(仍然记录在文件中),即使我从func退出并再次启动func (如:
func random {
showing
BROKEN PART
not showing
}
random
echo "this is random!"
random
更奇怪的是,即使我重置像
这样的描述符exec 1>&6 6>&-
exec 2>&7 7>&-
stdout仍然没有出现在屏幕上(正常回声“尝试”没有“>”)
任何帮助?
此处的完整脚本:https://pastebin.com/GdVQgETa 警告:长期和严重的用户和密码!