【发布时间】:2014-02-01 15:57:06
【问题描述】:
你好~我已经想了半天解决这个问题。
INPUT=lookup.txt
IFS=":"
while read vTitle vAuthor vPrice vStock vSold
do
tempString="$vTitle:$vAuthor:$vPrice:$vStock:$vSold"
#echo "$tempString"
while [ "$iTitle" == "$vTitle" ]; do
./testcase.sh
done
done < $INPUT
Testcase.sh 包含子菜单的脚本。当我运行这个脚本时,我的子菜单会不断重复,就像在递归循环中一样。知道如何解决这个问题吗? 编辑# 抱歉,$iTitle 包含用户输入。以及 testcase.sh 的示例如下:
#! /bin/bash
menu=""
until [ "$menu" = "f" ]; do
echo " a.) Update title"
echo " b.) Update author"
echo " c.) Update price"
echo " d.) Update quantity available"
echo " e.) Update quantity sold"
echo " f.) Back to main menu"
echo " Make selection"
read menu
case $menu in
a)
echo "a" ;;
b)
echo "b" ;;
c)
echo "c" ;;
d)
echo "d" ;;
e)
echo "e" ;;
f)
break ;;
*) ;;
esac
done
我意识到我的问题并不清楚。我有一个用户输入$iTitle,第一个代码摘录检查lookup.txt 是否有相同的$vTitle。成功后,我希望程序运行 testcase.sh。目前它确实运行,但 testcase.sh 递归运行。
【问题讨论】:
-
$iTitle 的价值是多少?我在示例代码中的任何地方都没有看到它定义...
-
testcase.sh长什么样子? -
请更新您的问题以包括
testcase.sh中的内容(或模拟问题的小示例)。如果它是使用 shell 的select关键字的代码,您可以尝试获取文件而不是. ./testcase.sh,但如果它有一个 shebang 标头,您可能需要删除它。很多其他的东西浮现在脑海。让我们先看看./testcase.sh中的内容;-)。祝你好运。 -
你的意思是无限循环,不是吗?递归函数在概念上可能自称为无穷大,但在计算机中,fn_a->fn_a->fn_a->INF 将很快耗尽计算机资源并崩溃。
while条件始终为真导致的无限循环意味着同一个块被一遍又一遍地执行,但会建立一个调用“堆栈”并且不会持续消耗越来越多的计算机资源;只是你的时间;-)。祝你好运。
标签: bash while-loop case infinite