重定向 bash 脚本的所有输出,包括命令 [duplicate]

Redirect all output of a bash script, including commands [duplicate]

提问人:Alexey Kiyashkin 提问时间:11/13/2023 最后编辑:Charles DuffyAlexey Kiyashkin 更新时间:11/14/2023 访问量:50

问:

我正在学习编写bash脚本,我有一个脚本是这样的:

#!/bin/bash
log_file="user_data.log"
exec > $log_file 2>&1

# Update list of available packages
sudo apt update

# Install required packages
sudo apt install docker.io docker-compose git nginx certbot python3-certbot-nginx -y 

我将 stdin 和 stderr 重定向到 user_data.log,但是我希望在同一日志文件中看到命令(例如 sudo apt update)。我该怎么做? 有没有更好的方法来实现这一目标(没有)? 非常感谢您的帮助。sh script.sh > somewhere

bash io-重定向

评论

0赞 KamilCuk 11/13/2023
所以?set -x
0赞 Charles Duffy 11/13/2023
答案永远不应该被编辑成问题:我们希望所有答案都放在一个均匀的龙骨上,以便投票;将您的问题标记为已解决并将特定答案标记为对您最有帮助的方法是单击它旁边的复选框

答:

1赞 Alexey Kiyashkin 11/13/2023 #1

正如 @KamilCuk 所评论的那样,我需要在脚本的开头添加以下内容:

set -x