huahuaxuwei 发表于 2005-11-30 08:41:49

while语句的问题

#!/bin/bash
echo "Key in the filename "
read filename
echo "Key in the data"
while
      read x
do
      echo $x >> $filename
done
cat $filename
#end

书上说当输入Enter时结束循环,但事实上不是,怎么结束循环呢?
我在一本教材上看到的!才学Shell编程。

fke7985 发表于 2005-11-30 08:48:11

你这里的while 和 read x 写在同一行试一下

huahuaxuwei 发表于 2005-11-30 08:55:02

你这里的while 和 read x 写在同一行试一下
我试过,不好使.

huahuaxuwei 发表于 2005-11-30 12:55:09

没人知道么?多么简单的问题啊!

MichaelBibby 发表于 2005-11-30 17:02:12

这个while没有一个终止的条件,死循环

我改了一下:

#!/usr/local/bin/bash

echo "key in the filename"
read filename

echo "key in the data"

while (read x&&echo $x>>$filename)
do
      cat $filename
      exit
done

huahuaxuwei 发表于 2005-12-2 08:19:22

这个while没有一个终止的条件,死循环

我改了一下:

#!/usr/local/bin/bash

echo "key in the filename"
read filename

echo "key in the data"

while (read x&&echo $x>>$filename)
do
      cat $filename
      exit
done

谢谢MichaelBibby,但是
do
      cat $filename
      exit
done
不就退出了么?
我想了两天,觉得是不是read命令把回车命令也当作一个参数啊,因为我执行后,看那个$filename文件,里面的有不少空白行.肯定是回车闹的.
我在条件里这么写的:
read x
test $x !="Quit"
输入Quit结束.
怎么才能让他没有参数就结束呢?

MichaelBibby 发表于 2005-12-2 08:49:53

怎么才能让他没有参数就结束呢?
没有参数?
那就是输入的内容是空喽,试试这样:

read x

if [ X$x == X"" ]
then
                exit
else
                echo "no"
fi

huahuaxuwei 发表于 2005-12-2 10:03:43


X$x == X""

这个X是什么啊? :neutral:

MichaelBibby 发表于 2005-12-2 10:07:36


X$x == X""

这个X是什么啊? :neutral:就是大写的字母XYZ中的X,通常使用test进行条件判断时都会用到(当然,不一定是X,可以是其他字符)

当变量 $VAR 未赋值,或值为空时,不加X的判断就会出问题:

[ $x == "" ]

最典型的一个例子是OpenBSD的 /etc/rc.conf 文件,兄弟可以参考一下

huahuaxuwei 发表于 2005-12-5 10:58:20

谢!
我去看一下!
页: [1]
查看完整版本: while语句的问题