我试着阅读这个,但我找不到任何解决我的问题。问题是:我有一个嵌套的while循环,内部被完全跳过。 outter循环运行良好,内部代码在取出并自行运行时按预期工作。我是新手,所以只是寻找一种直接的修复方法,不一定是重写所有内容的方法(除非必要)哈哈。我省略了一些用泛型[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
在你的第一个else
声明的if
分支内
我想,你的意思是什么
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