gpt4 book ai didi

linux - 从 bash 中的提示写入输出文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:14:24 25 4
gpt4 key购买 nike

我一直在编写一些脚本,拍了一个简单的简短快照,想分享一下,看看是否有人可以提供帮助。我基本上是使用提示符来执行我的脚本。第一个提示会问我是否要继续,这很好,第二个提示会问我是否想将我的输出写入 txt 文件,这也很好。但是我的问题是,当我点击"is"时,是否有办法告诉脚本以某种方式将输出写入 txt 文件,但更有可能的是,是否有办法在不重复我的命令的情况下做到这一点?我知道我可以将所有命令写入输出提示符,并且取决于我是否点击是或否,它会写入或跳过写入。

#!/bin/bash

# Disclaimer
read -p "[Y] for Yes or [N] for GTFO: " prompt
if [[ $prompt == "y" || $prompt == "" ]]
then

# Output save
read -p "[Y] to save output to txt [N] don't save: " prompt
if [[ $prompt == "y" || $prompt == "" ]]
then
touch /root/Desktop info.txt
ifconfig >> /root/Desktop info.txt

fi
printf "\n"
printf "Executing script, and will scan the system for information \n"
sleep 1.4
printf "\n"

# Will Check for IP
printf "IP Addresses: \n"
ifconfig

else
printf "\n"
printf "Exiting, Bye \n"

fi

最佳答案

如果您只想在用户请求时将脚本的输出记录到一个文件中,您可以这样做:

if [[ $prompt == "y" ||  $prompt == "" ]]
then
trap 'rm $fifo' 0
fifo=$(mktemp)
rm $fifo
mkfifo $fifo
tee output-of-script < $fifo &
exec > $fifo # All output of any command run will now go to the fifo,
# which will be read by tee
fi

允许用户指定输出文件名比硬编码文件“脚本输出”可能更简洁,我强烈建议不要提示;将此类内容指定为命令行参数要简洁得多。

当然,如果你不想将输出复制到当前的stdout和文件中,这样就简单多了:

if ...; then exec > output-file; fi

将导致所有后续命令的输出被写入output-file

此外,如果您使用的是 bash,运行 tee 也可以更简单:

if ...; then exec > >(tee output-file); fi

关于linux - 从 bash 中的提示写入输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47079898/

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