红联Linux门户
Linux帮助

求答案呀,各位大侠帮帮忙

发布时间:2011-01-05 20:39:38来源:红联作者:刘仙阳
阅读下述Shell程序,说明该程序的功能。
#! /bin/bash
echo -n “Please input the answer:”
read I
if [ $I = y ]
then
echo “Copy file1.txt to file2.txt”
cp file1.txt file2.txt
elif [ $I = n ]
then
echo “No copy!”
else
echo “Bad Input.”
fi
#end
文章评论

共有 17 条评论

  1. 年年年 于 2011-07-26 15:02:55发表:

    当然试过才这么说

  2. Global 于 2011-07-26 13:38:07发表:

    谁说的,你回去试试看吧,可行你就用用吧.楼上的!

  3. Global 于 2011-07-26 13:38:00发表:

    谁说的,你回去试试看吧,可行你就用用吧.楼上的!

  4. 年年年 于 2011-07-25 13:11:19发表:

    引用:
    你的第二行因该是read -p吧而不是echo -n懂不
    而且在Shell里是不接受“=”这个符号的,别以为这个是ASP,-eq表示是等号的意思.
    还有你这个i是从哪里来的,你回去学学ASP先吧,你都还没定义呢,还有你的这个Y又是从哪里 ...
    Global 发表于 2011-7-23 15:13


    LZ的脚本可行,但写得不好。read -p是最好的选择。
    shell脚本里面可以直接就用新的变量名称,无需事先声明。read I 是可行的。
    中括号里面可以用=,意思与==是一样的,注意是中括号[]里面才可以。
    -eq -gt等比较符一般用于数字比较。==和!=用在字符串比较。
    但是建议LZ最好还是用==吧!

  5. wenhao1129 于 2011-07-24 21:04:01发表:

    答案都有了哦

  6. qq9293000079 于 2011-07-24 09:53:45发表:

    (o):tx路过学习下,新手顶

  7. wenhao1129 于 2011-07-23 23:33:33发表:

    选择是要COPY还是不要

  8. Global 于 2011-07-23 15:13:38发表:

    你的第二行因该是read -p吧而不是echo -n懂不
    而且在Shell里是不接受“=”这个符号的,别以为这个是ASP,-eq表示是等号的意思.
    还有你这个i是从哪里来的,你回去学学ASP先吧,你都还没定义呢,还有你的这个Y又是从哪里来的!佩服
    #! /bin/bash #定义环境
    read -p “Please input the answer:” Y #提示输入答案:然后将输入的文字履值给Y
    if [ $Y -eq y ] #然后判断这个值是否等于Y如果等于就运行下面的命令,否则就运行下一条判断语句
    then #结尾语句可以写成if [ 判断语句 ] ; then注意空格
    echo “Copy file1.txt to file2.txt” #提示要拷贝的文件名叫file2.txt
    cp file1.txt file2.txt #执行拷贝命令将file1.txt拷贝到当前目录下并且改名为file2.txt
    fi #if语句的结束语,每一条if对应一个fi结束(重点)
    if [ $Y -eq n ] ; then #这个是或者的意思 elif [ $Y = n ] 这个写法不见意,判断这个值否等于n意义与上一个判断语句
    echo “No copy!” #提示不能拷贝的意思,意义和第五行一样
    else #否则的意思,各ASP一样
    echo “Bad Input.” #意义如上二行提示输入不对见意在后面加入一个exit 1表示退出Shell
    fi #意思和上一个fi一样
    最后和大家说明一点#这个符号是注释的意思,和ASP的//一样
    祝大家学习快乐

  9. getlinux 于 2011-01-06 19:50:39发表:

    呵呵,luodeke解译的够给力。

  10. pallana 于 2011-01-06 19:45:00发表:

    我只有C语言的基础,没有搞过shell编程,但是我也是能够看懂的。这种问题都要来问,老兄你该让人鄙视啊

  11. luodeke 于 2011-01-06 17:22:08发表:

    [i=s] 本帖最后由 luodeke 于 2011-1-6 17:24 编辑 [/i]

    #! /bin/bash
    echo -n “Please input the answer:”
    read I #等待用户输入I的值
    if [ $I = y ] #如果I的值为y
    then
    echo “Copy file1.txt to file2.txt”#如果I的值为y,那么打印opy file1.txt to file2.txt
    cp file1.txt file2.txt #然后这里是后台执行那个cp
    elif [ $I = n ] #如果为n
    then
    echo “No copy!” #如果为n,打印No copy!
    else #如果输入值也不是y也不是n
    echo “Bad Input.” #如果输入值也不是y也不是n,那么打印Bad Input.
    fi
    #end

  12. zing840828 于 2011-01-06 15:30:02发表:

    呵呵!

  13. 大宝 于 2011-01-06 09:02:32发表:

    本人不会编程都看得懂,阁下还看不懂?
    家庭作业自己做~

  14. messi10 于 2011-01-05 23:52:50发表:

    if判断语句是不是有点问题哦 用==吧

  15. taoty 于 2011-01-05 23:30:06发表:

    虽然不懂编程,但这几句话还是能看懂的。

  16. 水君 于 2011-01-05 23:07:45发表:

    read:是读取来自键盘的变量,"$I“是引用I变量; echo:你看得懂啦
    题意就是说:
    “Please input the answer:”
    当你键盘输入Y,即I=‘y’时,会输出:“Copy file1.txt to file2.txt”,然后把file1复制一份(即file2);
    当你键盘输入n,即I=‘n’时,会输出 “No copy!”
    但I既不是‘y’和‘n’的时候,就输出 “Bad Input.”
    然后结束
    阳兄加油啊~~~要期末考试啦(so):)

  17. shenhao0129 于 2011-01-05 21:23:22发表:

    虽然我对于shell编程也是半调子的,这个还是看的明白的,就是要求用户输入y/n的选,分别对应拷贝一个txt文件并重命令