QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1690|回复: 9

while语句的问题

[复制链接]
发表于 2005-11-30 08:41:49 | 显示全部楼层 |阅读模式
#!/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编程。
发表于 2005-11-30 08:48:11 | 显示全部楼层
你这里的while 和 read x 写在同一行试一下
回复

使用道具 举报

 楼主| 发表于 2005-11-30 08:55:02 | 显示全部楼层
[quote:ef89d60cda="fke7985"]你这里的while 和 read x 写在同一行试一下[/quote]
我试过,不好使.
回复

使用道具 举报

 楼主| 发表于 2005-11-30 12:55:09 | 显示全部楼层
没人知道么?多么简单的问题啊!
回复

使用道具 举报

发表于 2005-11-30 17:02:12 | 显示全部楼层
这个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]
回复

使用道具 举报

 楼主| 发表于 2005-12-2 08:19:22 | 显示全部楼层
[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结束.
怎么才能让他没有参数就结束呢?
回复

使用道具 举报

发表于 2005-12-2 08:49:53 | 显示全部楼层
[quote:bda7fb78c3="huahuaxuwei"]怎么才能让他没有参数就结束呢?[/quote]
没有参数?
那就是输入的内容是空喽,试试这样:
[code:1]
read x

if [ X$x == X"" ]
then
                exit
else
                echo "no"
fi
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2005-12-2 10:03:43 | 显示全部楼层
X$x == X""

这个X是什么啊? :neutral:
回复

使用道具 举报

发表于 2005-12-2 10:07:36 | 显示全部楼层
[quote:38ce10f3bf="huahuaxuwei"]
X$x == X""

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

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

使用道具 举报

 楼主| 发表于 2005-12-5 10:58:20 | 显示全部楼层
谢!
我去看一下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 05:16 , Processed in 0.061602 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表