|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 461|回復: 3
打印 上一主題 下一主題

Linux命令之 交互式输入read

[複製鏈接]

989

主題

1

好友

5260

積分

教授

Rank: 8Rank: 8

  • TA的每日心情
    奮斗
    2024-5-15 16:35
  • 簽到天數: 1232 天

    [LV.10]以壇為家III

    推廣值
    2
    貢獻值
    378
    金錢
    1880
    威望
    5260
    主題
    989

    回文勇士 文明人 中學生 高中生 簽到勳章 簽到達人 男生勳章 大學生 文章勇士 附件高人 附件達人 文章達人 教授

    樓主
    發表於 2013-7-28 17:46:56
    read是一个重要的Linux命令,用于从键盘或标准输入中读取输入。

    一般只有按回车键的时候才标志输入完毕,但有些情况下没法按回车键,read提供了一种不需要按回车键的方法。

    1.-p “提示语句” 变量名


    [wang@localhost 桌面]$ vim testcmd.sh


    #!/bin/bash

    read -p "Enter your name :" name1 name2  //name1前面要空格,可以赋值给多个变量

    echo $name1

    echo $name2




    [wang@localhost 桌面]$ chmod +x testcmd.sh

    [wang@localhost 桌面]$ ./testcmd.sh


    Enter your name :william sam

    william

    sam

    [wang@localhost 桌面]$ ./testcmd.sh

    Enter your name :william sam linux    //多余的输入会赋值给最后一个变量

    william

    sam linux




    2.-n 输入个数

    当输入字符数达到预定数目,则自动退出,不用按回车。


    [wang@localhost 桌面]$ read -n 4 -p "Enter your name :" name;echo $name

    Enter your name :wangwang    //一个wang是输入的,另一个是echo $name。




    3.-s 不回显

    用于输入密码,对于密码的保护。


    [wang@localhost 桌面]$ read -n 4 -s -p "Enter your name :" name;echo $name

    Enter your name :wang    //这个是echo $name




    4.-t 等待输入的秒数


    [wang@localhost 桌面]$ read -n 4 -t 2 -p "Enter your name :" name;echo $name

    Enter your name :            //等2秒后 自动跳出了





    或者写个脚本:

    [wang@localhost 桌面]$ vim testcmd.sh


    #!/bin/bash

    if read -t 2 -p "Enter your name :" name

    then

            echo $name

    else

            echo "Timeout!"

    fi


    [wang@localhost 桌面]$ ./testcmd.sh

    Enter your name :Timeout!

    5.-d 自定义定界符

    输入自定义的定界符,结束输入。

    [wang@localhost 桌面]$ read -d ":" -p "Enter your name :" name;echo $name

    Enter your name :name:name



    6.从标准输入中读取

    [wang@localhost 桌面]$ vim testcmd.sh

    #!/bin/bash

    count=1

    cat test.c |while read line //从test.c读取每一行并赋值给line变量

    do

    echo "$count:$line"

    count=$[ count+1 ]

    done




    [wang@localhost 桌面]$ cat test.c

    #include <stdio.h>



    int main()

    {

    int a = 4;

    (++a) += a;

    printf("we are the best %d!\n",a);

    return 0;

    }




    [wang@localhost 桌面]$ ./testcmd.sh

    1:#include <stdio.h>

    2:

    3:int main()

    4:{

    5:int a = 4;

    6:(++a) += a;

    7:printf("we are the best %d!n",a);

    8:return 0;

    9:}

    注意:上面的cat test.c 也可以换成ls ,ps,grep,find等等命令

    18

    主題

    2

    好友

    316

    積分

    中學生

    Rank: 3Rank: 3

  • TA的每日心情
    奮斗
    2021-9-22 23:51
  • 簽到天數: 294 天

    [LV.8]以壇為家I

    推廣值
    0
    貢獻值
    4
    金錢
    121
    威望
    316
    主題
    18

    回文勇士 簽到勳章 簽到達人 男生勳章

    沙發
    發表於 2013-8-21 21:39:53
    看看只是这样子
    無效樓層,該帖已經被刪除
    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-5-30 05:04 , Processed in 0.028979 second(s), 27 queries , Gzip On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部