gpt4 book ai didi

bash - 检查 "rm -i"上的用户输入 ?

转载 作者:行者123 更新时间:2023-11-29 09:38:53 27 4
gpt4 key购买 nike

有没有办法检查用户对 rm -i 执行的响应?我想根据用户是否用 yn 响应来echo 某些内容。

无论用户的响应如何,命令都会成功返回,因此此尝试没有成功:

$ rm -i testfile.txt && echo "The file was deleted."
remove testfile.txt? n
The file was deleted.

我的推理是 echo 部分只会在 rm 部分成功时执行,但显然 n 响应也算作执行成功。

我还希望能够根据答案改变消息。这段代码可以做到,但它不是很漂亮。

file=testfile.txt
touch $file

read -p "Are you sure (y/n)? " answer
if [[ $answer =~ ^[yY](es|ES)?$ ]]; then
rm $file
echo "Deleted file."
else
echo "Did nothing."
fi

肯定有一种方法可以获取rm -i 的输入。怎么办?

最佳答案

您可以检查文件是否真的被删除了。例如。

rm -i testfile.txt && [[ ! -e testfile.txt ]] && echo "The file was deleted."

如果rm成功,则测试,如果文件不存在[[ ! -e file ]] 然后才显示消息。它涵盖了这种情况,当您尝试删除不存在的文件时,rm 将返回不同于 0 的退出代码。

如果您想显示文件何时被故意删除或未删除的消息,以及有关错误的额外信息,那么您可以像这样扩展之前的代码:

rm -i testfile.txt && {
[[ ! -e testfile.txt ]] && echo "The file was deleted." || echo "Ignored"
} || echo "Error"

关于bash - 检查 "rm -i"上的用户输入 ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58781511/

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