bash中脚本案例语句时的无限循环

时间:2014-02-01 15:57:07

标签: bash while-loop case infinite

你好〜我一直试图解决这个问题半天。

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以递归方式运行。

1 个答案:

答案 0 :(得分:1)

while [ "$iTitle" == "$vTitle" ]; do
        ./testcase.sh
done

在此块语句中,$iTitle$vTitle均未更改。这就是循环没有结束的原因。可能是你想用

替换它
if [ "$iTitle" == "$vTitle" ]; then
            ./testcase.sh
fi

而且,在代码中看不到$iTitle的值。