gpt4 book ai didi

linux - 嵌套 while 循环(linux 中的 bash 脚本)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:56 25 4
gpt4 key购买 nike

我的嵌套 while 循环有问题。我的问题是我的内部 while 循环只执行一次,但我的外部循环能够继续重复。这是我的代码:

while [[ "$input" != "exit" && "$input" != "Exit" && "$input" != "EXIT" ]]
do

echo 'Enter "name" to find files by name'

read input


if [[ "$input" = "name" || "$input" = "Name" || "$input" = "NAME" ]]; then


while [[ "$a" != "f" && "$a" != "s" ]]
do
read -p "Want to search inside only the current folder (f) or include subfolders (s)" a
if [ "$a" = "f" ]; then
echo 'f'

elif [ "$a" = "s" ]; then
echo 's'

elif [[ "$a" != "f" && "$a" != "s" ]]; then
echo 'you have entered an invalid option, please try again'

fi
done
fi
done

这是一个示例输出:

输入“名称”按名称查找文件

输入“size”查找指定大小的文件

输入“日期”按日期查找文件

输入“string”查找包含特定字符串的文件

输入“exit”退出脚本。

名字

只想在当前文件夹内搜索 (f) 或包括子文件夹 (s)t

您输入的选项无效,请重试

只想在当前文件夹内搜索 (f) 或包括子文件夹 (s)s

s

输入“名称”按名称查找文件

输入“size”查找指定大小的文件

输入“日期”按日期查找文件

输入“string”查找包含特定字符串的文件

输入“exit”退出脚本。

name # 这里是我的内部循环运行失败的地方,但我不明白为什么

输入“名称”按名称查找文件

输入“size”查找指定大小的文件

输入“日期”按日期查找文件

输入“string”查找包含特定字符串的文件

输入“exit”退出脚本。

最佳答案

您的代码似乎与您提供的打印输出不匹配。也不清楚你的问题是什么。但是代码有一个明显的问题,它在读取之前比较 input 的值。您需要读取输入,然后将其与某些内容进行比较。幸运的是,这并不难做到,因为在 while 条件下可以有多个命令。另一个问题似乎是您永远不会跳出内部循环。

下面的内容也被重构为使用更优雅的 case 语句而不是重复的比较。

while read -p 'Enter "name" to find files by name' input
[[ ! $input =~ [Ee]xit|EXIT ]]
do
case $input in
[Nn]ame | NAME )
while read -p "Want to search inside only the current folder (f) or include subfolders (s)" a
case $a in
f)
echo 'f'
break ;; # success: break out of while loop
s)
echo 's'
break ;;
*)
echo 'you have entered an invalid option, please try again' ;;
esac
done ;;
esac
done

关于linux - 嵌套 while 循环(linux 中的 bash 脚本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26541891/

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