gpt4 book ai didi

bash - 将标准输入的副本从 bash 脚本本身重定向到文件

转载 作者:行者123 更新时间:2023-12-04 09:41:57 25 4
gpt4 key购买 nike

引用 https://stackoverflow.com/a/11886837/1996022 (也无耻地偷了标题)问题是如何捕获脚本的输出我想知道如何另外捕获脚本输入。主要是让也有用户输入的脚本产生完整的日志。

我试过这样的事情

exec 3< <(tee -ia foo.log <&3)
exec <&3 <(tee -ia foo.log <&3)

但似乎没有任何效果。我可能只是错过了一些东西。

最佳答案

也许使用 script 会更容易命令?您可以让您的用户使用 script 运行脚本。直接,或者做一些像这样时髦的事情:

#!/bin/bash

main() {
read -r -p "Input string: "
echo "User input: $REPLY"
}

if [ "$1" = "--log" ]; then
# If the first argument is "--log", shift the arg
# out and run main
shift
main "$@"
else
# If run without log, re-run this script within a
# script command so all script I/O is logged
script -q -c "$0 --log $*" test.log
fi

不幸的是,您不能将函数传递给 script -c这就是为什么在这个方法中需要双重调用。

如果有两个脚本是可以接受的,你也可以有一个面向用户的脚本,它只用 script 调用非面向用户的脚本。 :

script_for_users.sh
--------------------
#!/bin/sh
script -q -c "/path/to/real_script.sh" <log path>

real_script.sh
---------------
#!/bin/sh
<Normal business logic>

关于bash - 将标准输入的副本从 bash 脚本本身重定向到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62291762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com