bash 脚本中的嵌套 while 循环 - 内部被跳过
Nested while loop in bash script - inner being skipped
我试着阅读这篇文章,但找不到任何解决我问题的方法..
问题是:我有一个嵌套的 while 循环,并且完全跳过了内部循环。外部循环 运行 很好,内部代码在取出时确实按预期工作 运行 。
我对此很陌生,所以只是在寻找一种直接的修复方法,而不一定是一种重写所有内容的方法(除非必要)哈哈。
我省略了一些用通用 [command] 替换的东西
guid=0
procedure=0
olcmd="${userbin}/[command] ${guid}"
guidver=true;
while $guidver; do
guidver=false;
read -p "
Input log GUID below and press 'Enter'?
" guid
if [[ $guid == ????????-????-????-????-???????????? ]]; then
printf "Good GUID, continuing\n";
else echo "Bad value, please use only Index GUIDs."; guidver=true
olver=true;
while $olver; do
olver=false;
if $olcmd | grep -i '[text]'>/dev/null; then
printf "\n[text]\n\n"
continue
# guidver=false;
else printf "\n[text]\n\n"
olver=true;
break
fi
done
fi
done
非常感谢任何帮助!
您的缩进具有误导性:
检查代码是否缩进正确
guid=0
procedure=0
olcmd="${userbin}/[command] ${guid}"
guidver=true;
while $guidver; do
guidver=false;
read -p "
Input log GUID below and press 'Enter'?
" guid
if [[ $guid == ????????-????-????-????-???????????? ]]; then
printf "Good GUID, continuing\n";
else echo "Bad value, please use only Index GUIDs.";
guidver=true
olver=true;
while $olver; do
olver=false;
if $olcmd | grep -i '[text]'>/dev/null; then
printf "\n[text]\n\n"
continue
# guidver=false;
else printf "\n[text]\n\n"
olver=true;
break
fi
done
fi
done
看到了吗?您的第二个 while
位于第一个 if
语句
的 else
分支内
我想,你的意思应该是
guid=0
procedure=0
olcmd="${userbin}/[command] ${guid}"
guidver=true;
while $guidver; do
guidver=false;
read -p "
Input log GUID below and press 'Enter'?
" guid
if [[ $guid == ????????-????-????-????-???????????? ]]; then
printf "Good GUID, continuing\n";
else echo "Bad value, please use only Index GUIDs.";
guidver=true
fi
olver=true;
while $olver; do
olver=false;
if $olcmd | grep -i '[text]'>/dev/null; then
printf "\n[text]\n\n"
continue
# guidver=false;
else printf "\n[text]\n\n"
olver=true;
break
fi
done
done
我试着阅读这篇文章,但找不到任何解决我问题的方法.. 问题是:我有一个嵌套的 while 循环,并且完全跳过了内部循环。外部循环 运行 很好,内部代码在取出时确实按预期工作 运行 。 我对此很陌生,所以只是在寻找一种直接的修复方法,而不一定是一种重写所有内容的方法(除非必要)哈哈。 我省略了一些用通用 [command] 替换的东西
guid=0
procedure=0
olcmd="${userbin}/[command] ${guid}"
guidver=true;
while $guidver; do
guidver=false;
read -p "
Input log GUID below and press 'Enter'?
" guid
if [[ $guid == ????????-????-????-????-???????????? ]]; then
printf "Good GUID, continuing\n";
else echo "Bad value, please use only Index GUIDs."; guidver=true
olver=true;
while $olver; do
olver=false;
if $olcmd | grep -i '[text]'>/dev/null; then
printf "\n[text]\n\n"
continue
# guidver=false;
else printf "\n[text]\n\n"
olver=true;
break
fi
done
fi
done
非常感谢任何帮助!
您的缩进具有误导性:
检查代码是否缩进正确
guid=0
procedure=0
olcmd="${userbin}/[command] ${guid}"
guidver=true;
while $guidver; do
guidver=false;
read -p "
Input log GUID below and press 'Enter'?
" guid
if [[ $guid == ????????-????-????-????-???????????? ]]; then
printf "Good GUID, continuing\n";
else echo "Bad value, please use only Index GUIDs.";
guidver=true
olver=true;
while $olver; do
olver=false;
if $olcmd | grep -i '[text]'>/dev/null; then
printf "\n[text]\n\n"
continue
# guidver=false;
else printf "\n[text]\n\n"
olver=true;
break
fi
done
fi
done
看到了吗?您的第二个 while
位于第一个 if
语句
else
分支内
我想,你的意思应该是
guid=0
procedure=0
olcmd="${userbin}/[command] ${guid}"
guidver=true;
while $guidver; do
guidver=false;
read -p "
Input log GUID below and press 'Enter'?
" guid
if [[ $guid == ????????-????-????-????-???????????? ]]; then
printf "Good GUID, continuing\n";
else echo "Bad value, please use only Index GUIDs.";
guidver=true
fi
olver=true;
while $olver; do
olver=false;
if $olcmd | grep -i '[text]'>/dev/null; then
printf "\n[text]\n\n"
continue
# guidver=false;
else printf "\n[text]\n\n"
olver=true;
break
fi
done
done