while语句的问题

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编程。
你这里的while 和 read x 写在同一行试一下
[quote:ef89d60cda="fke7985"]你这里的while 和 read x 写在同一行试一下[/quote]
我试过,不好使.
没人知道么?多么简单的问题啊!
这个while没有一个终止的条件,死循环

我改了一下:
[code:1]
#!/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
[/code:1]
[quote:ed55b21503="MichaelBibby"]这个while没有一个终止的条件,死循环

我改了一下:
[code:1]
#!/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
[/code:1][/quote]
谢谢MichaelBibby,但是
do
        cat $filename
        exit
done
不就退出了么?
我想了两天,觉得是不是read命令把回车命令也当作一个参数啊,因为我执行后,看那个$filename文件,里面的有不少空白行.肯定是回车闹的.
我在条件里这么写的:
read x
test $x !="Quit"
输入Quit结束.
怎么才能让他没有参数就结束呢?
[quote:bda7fb78c3="huahuaxuwei"]怎么才能让他没有参数就结束呢?[/quote]
没有参数?
那就是输入的内容是空喽,试试这样:
[code:1]
read x

if [ X$x == X"" ]
then
                exit
else
                echo "no"
fi
[/code:1]
引用:
X$x == X""
这个X是什么啊? :neutral:
[quote:38ce10f3bf="huahuaxuwei"]
引用:
X$x == X""
这个X是什么啊? :neutral:[/quote]就是大写的字母XYZ中的X,通常使用test进行条件判断时都会用到(当然,不一定是X,可以是其他字符)

当变量 $VAR 未赋值,或值为空时,不加X的判断就会出问题:
[code:1]
[ $x == "" ]
[/code:1]
最典型的一个例子是OpenBSD的 /etc/rc.conf 文件,兄弟可以参考一下
谢!
我去看一下!