亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 關(guān)于循環(huán)的一些問(wèn)題? [打印本頁(yè)]

作者: yezhulin1982    時(shí)間: 2008-11-08 21:50
標(biāo)題: 關(guān)于循環(huán)的一些問(wèn)題?
這是一個(gè)腳本中關(guān)于條件和循環(huán)的部分:

if condition;then
    echo -n "xxxxxxx y/n" #以上condition的return value為0,此處打印是否重新執(zhí)行腳本。
    while read CHOICE
       do  case $CHOICE in
              y|Y)

???? #此處使用什么命令語(yǔ)句才能跳出循環(huán),使腳本重新執(zhí)行?
              ;;
              *)
              break
              ;;
           esac
       done
  elif condition
      cmd
  else
      cmd
fi

如果上述紅色部分使用continue語(yǔ)句,好像并不能跳出循環(huán),重新執(zhí)行腳本進(jìn)行條件判斷。
作者: xwmhmily    時(shí)間: 2008-11-08 22:08
如果上述紅色部分使用continue語(yǔ)句,好像并不能跳出循環(huán),重新執(zhí)行腳本進(jìn)行條件判斷。

LZ 有試驗(yàn)過(guò)嗎?
作者: yezhulin1982    時(shí)間: 2008-11-09 09:59
由于字體的原因,前面發(fā)的貼看的不是很清楚,所以再發(fā)一個(gè)簡(jiǎn)化了的腳本。

#!/bin/bash
#while.loop
if [ "$#" -ne 2 ];then
        echo -n "[y/n]: "
        while read CHOICE
        do
                case ${CHOICE} in
                        y|Y)
                        continue
                        ;;
                        *)
                        break
                        ;;
                esac
        done
  else
        echo "You are right"
fi

執(zhí)行該腳本后如果輸入"y"字符,還是不能跳出循環(huán)重新執(zhí)行該腳本。
[xfm@ubuntu:~]$ ./while.loop
[y/n]: y
^C
[xfm@ubuntu:~]$
以上還是在循環(huán),必需用Ctrl+c來(lái)中止。

在腳本中使用set -x來(lái)看一下執(zhí)行過(guò)程。
[xfm@ubuntu:~]$ ./while.loop
+ '[' 0 -lt 2 -o 0 -gt 2 ']'
+ echo -n '[y/n]: '
[y/n]: + read CHOICE
y
+ case ${CHOICE} in
+ continue
+ read CHOICE


以上紅色部分是輸入的字符"y",而藍(lán)色部分是輸入"y"后的執(zhí)行語(yǔ)句。
作者: ly5066113    時(shí)間: 2008-11-09 10:18
原帖由 yezhulin1982 于 2008-11-9 09:59 發(fā)表
由于字體的原因,前面發(fā)的貼看的不是很清楚,所以再發(fā)一個(gè)簡(jiǎn)化了的腳本。

#!/bin/bash
#while.loop
if [ "$#" -ne 2 ];then
        echo -n "[y/n]: "
        while read CHOICE
        do
        ...



#!/bin/bash
#while.loop
while :
do
if [ "$#" -ne 2 ];then
        echo -n "[y/n]: "
        while read CHOICE
        do
                case ${CHOICE} in
                        y|Y)
                        break
                        ;;
                        *)
                        exit
                        ;;
                esac
        done
  else
        echo "You are right"
fi
done
作者: cjaizss    時(shí)間: 2008-11-09 10:29
break
作者: cjaizss    時(shí)間: 2008-11-09 10:30
其實(shí)break也不行,它并不可以讓程序回到開(kāi)始的那個(gè)if判斷處,如果你希望break可以做到,那么那個(gè)if外面還得包一層循環(huán)
作者: yezhulin1982    時(shí)間: 2008-11-09 11:29
以下是一個(gè)系統(tǒng)當(dāng)前時(shí)間,根據(jù)輸入的位置變量"$1"加上或減去位置變量"$2"多少分鐘的time.pm腳本。

  1 #!/bin/bash
  2 #time.pm
  3
  4 if [ "$#" -ne 2 ];then
  5         echo "Please input two parameters,such as:[-+]m 0-59"
  6         echo -n "Do you again?[y/n] "
  7
  8         while read CHOICE
  9         do
10                 case ${CHOICE} in
11                 y|Y)
12                 echo -n "Please input two parameters,such as:[-+]m 0-59 "
13                 read PARM MIN
14                 exec /home/xfm/time.pm ${PARM} ${MIN}
15                 ;;
16                 *)
17                 break
18                 ;;
19                 esac
20         done
21
22   elif [ "$1" = "+m" -o "$1" = "m" ] && [ "$2" -ge 0 -a "$2" -le 59 ];then
23         time_p=$(date -d "+$2 minute")
24         echo ${time_p}
25
26   elif [ "$1" = "-m" ] && [ "$2" -ge 0 -a "$2" -le 59 ];then
27         time_m=$(date -d "-$2 minute")
28         echo ${time_m}
29   else
30         echo "The time's format is wrong"
31         exit
32 fi

終于弄好了。
作者: yezhulin1982    時(shí)間: 2008-11-09 11:33
以上腳本只是用來(lái)練習(xí)shell編程用的,有些地方還請(qǐng)各位優(yōu)化一下。
thx!




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2