while循环问题

while循环问题

小弟刚学SHELL编程,现在有个问题不懂,想请教各位大侠们。
这个例子也是在论坛里下的书上的一个例子。是个死循环,但是我找不出它出错的地方在哪?
复制内容到剪贴板
代码:
#!/bin/bash
declare flag="1"
while [ "$flag" -eq "1" ]
  do
    clear
    echo " "
    echo "The Telephone Book"
    echo " "
    echo "1. Dsiplay A Telephone Number"
    echo "2. Add A New Telephone Nubmer"
    echo " "
    echo "Q Quit"
    echo " "
    echo "Enter your selection:"
    read selection
    case $selection in
    1)
      echo "you want to display a telephone number:"

      ;;
    2)
      echo "you want to add a new telephone number;"
     ;;
    "q")
       $flag="0"
   esac
done
请大侠们帮忙看看问题在哪?怎么是个死循环,我输入q ,无论输入什么都不显示      
按 q 后
flag = 0
所以循环退出了。
rosenberg 兄没有学过C 语言之类的吧      
zhuominglinag兄
  小弟学过点C,可能是我没表达清楚吧,
我输入q后,程序并没有退出来,而是还在程序中,是个死循环?不知道是什么原因造成的,没有返回到shell命令行去      
$flag="0" 这是什么用法?      
line 25: 1=0 command not found      
我也觉得是这个赋值语句有问题,$flag=“1”,但是我改了后,情况还是一样的
把declare flag="1"改成declare flag=1
while [ "$flag" -eq "1" ]改成while [ "$flag" -eq 1 ]
$flag="0" 改成$flag=0
但情况还是一样的!      
shell 里面的赋值不需要$
直接 flag=0 即可      
将$flag="0"改成exit "0" 就行了.