Linux shell編程 11 shell輸入輸出之 echo、read

2020-12-13 kevin雜談

在s h e l l腳本中,可以用幾種不同的方式讀入數據:可以使用標準輸入—預設為鍵盤,或者指定一個文件作為輸入。對於輸出也是一樣:如果不指定某個文件作為輸出,標準輸出總是和終端屏幕相關聯。如果所使用命令出現了什麼錯誤,它也會預設輸出到屏幕上,如果不想把這些信息輸出到屏幕上,也可以把這些信息指定到一個文件中。

5.1 echo

使用e c h o命令可以顯示文本行或變量,或者把字符串輸入到文件。它的一般形式為:

echo string

e c h o命令有很多功能,其中最常用的是下面幾個:

c 不換行。

進紙。

跳格。

換行。

如果希望提示符出現在輸出的字符串之後,可以用

上面的命令將會有如下的顯示:

其中「□」是光標。

如果想在輸出字符之後,讓光標移到下一行,可以用:

$ echo "The red pen ran out of ink"

還可以用e c h o命令輸出轉義符以及變量。在下面的例子中,你可以讓終端鈴響一聲,顯示出$ H O M E目錄,並且可以讓系統執行 t t y命令(注意,該命令用鍵盤左上角的符號,法語中的抑音符引起來,不是單引號, )。

如果是LINUX系統,那麼......必須使用- n選項來禁止echo命令輸出後換行:

還可以在e c h o語句中使用跳格符,記住別忘了加反斜槓 :

如果想把一個字符串輸出到文件中,使用重定向符號 >。在下面的例子中一個字符串被重定向到一個名為m y f i l e的文件中:

$ echo "The log files have all been done"> myfile

或者可以追加到一個文件的末尾,這意味著不覆蓋原有的內容:

$ echo "$LOGNAME carried them out at `date`">>myfile

現在讓我們看一下m y f i l e文件中的內容:

初涉s h e l l的用戶常常會遇到的一個問題就是如何把雙引號包含到 e c h o命令的字符串中。

引號是一個特殊字符,所以必須要使用反斜槓 來使s h e l l忽略它的特殊含義。假設你希望使用e c h o命令輸出這樣的字符串: 「/ d e v / r m t 0」,那麼我們只要在引號前面加上反斜槓 即可:

$ echo ""/dev/rmt0""

" / d e v / r m t 0 "

5.2 read

可以使用r e a d語句從鍵盤或文件的某一行文本中讀入信息,並將其賦給一個變量。如果只指定了一個變量,那麼 r e a d將會把所有的輸入賦給該變量,直至遇到第一個文件結束符或回車。

它的一般形式為:

read varible1 varible2 ...

在下面的例子中,只指定了一個變量,它將被賦予直至回車之前的所有內容:

在下面的例子中,我們給出了兩個變量,它們分別被賦予名字和姓氏。 s h e l l將用空格作為變量之間的分隔符:

如果輸入文本域過長, Shell 將所有的超長部分賦予最後一個變量。下面的例子,假定要讀取變量名字和姓,但這次輸入三個名字;結果如下;

在上面的例子中,如果我們輸入字符串 John Lemon Doe,那麼第一個單詞將被賦給第一個變量,而由於變量數少於單詞數,字符串後面的部分將被全部賦給第二個變量。

在編寫s h e l l腳本的時候,如果擔心用戶會對此感到迷惑,可以採用每一個 r e a d語句只給一個變量賦值的辦法:

用戶在運行上面這個腳本的時候,就能夠知道哪些信息賦給了哪個變量。

相關焦點

  • 玩轉 Linux - shell 編程基礎
    簡述使用 linux 就離不開 shell,那麼也就是說也離不開 shell 編程。
  • 玩轉Linux - shell 編程基礎(一)
    簡述使用 linux 就離不開 shell,那麼也就是說也離不開 shell 編程。
  • 《Linux基礎》第5講 shell編程 (一)
    注意:bash是 Bourne Again Shell 的縮寫,是linux標準的默認shell ,它基於Bourne shell,吸收了C shell和Korn shell的一些特性。bash完全兼容sh,也就是說,用sh寫的腳本可以不加修改的在bash中執行。
  • CentOS「linux」學習筆記25:shell編程for和while循環
    linux基礎操作:主要介紹了shell編程流程控制for和while循環語句。for((i=1;i<=100:i++))doecho "輸出從1到100的值:$i"done返回結果: 輸出從1到100的值:100例子4:將1到100的值相加並輸出最終結果。
  • 【shell】shell 腳本編程基礎
    輸入/輸出重定向10.1 輸出重定向10.2 輸入重定向10.3 Here Document10.4 /dev/null 文件11. 文件包含1. 初識1.1 第一個 shell 腳本test.sh :#!
  • ...Bash | Linux 中國|linux|程式語言|bash|shell|隨機數_網易訂閱
    本文字數:2676,閱讀時長大約: 3分鐘  https://linux.cn/article-12962-1.html作者:Jim Hall譯者:Xingyu.Wang  學習一門新的程式語言是很有趣的。每當我嘗試學習一門新的語言時,我都會專注於定義變量、編寫語句和評估表達式。
  • shell腳本極簡教程
    注意:bash是 Bourne Again Shell 的縮寫,是linux標準的默認shell ,它基於Bourne shell,吸收了C shell和Korn shell的一些特性。bash完全兼容sh,也就是說,用sh寫的腳本可以不加修改的在bash中執行。大體上,可以將程序設計語言可以分為兩類:編譯型語言和解釋型語言。
  • 乾貨 | Linux基本技能—Shell精簡教程
    同時,變量名的命名須遵循如下規則:變量定義舉例:myUrl="http://see.xidian.edu.cn/cpp/linux/"myNum=100使用變量使用一個定義過的變量,只要在變量名前面加美元符號($)即可,如:your_name="mozhiyan"echo $your_name
  • Linux命令行與Shell腳本編程學習筆記15
    如果要兩個命令一起運行,可在同一提示行輸入它們,用分號分隔開。2. 在創建shell腳本文件時,必須在文件的第一行指定要使用的shell。3. 在通常的shell腳本的行裡,井號(#)用作注釋行。shell腳本中注釋行是不被shell執行的。然而,shell腳本文件的第一行是個特例,井號後接嘆號告訴shell用哪個shell來運行腳本。4.
  • 正確的使用python調用shell的姿勢
    python天生的優勢,用它來開發一些devops的自動化作業是非常方便的,當然在linux上,一般我們用shell就能寫一些簡單的自動化腳本,但如果自動化作業複雜的話,使用shell腳本就很難搞定了,一方面shell腳本量變大就會比較難以工程化,維護和閱讀,另外一個重要的原因是shell不具備正經程式語言所具備的豐富的一些類庫,比如說map類型必須得bash版本4.x以上才有,或者有序
  • shell中的echo命令
    感謝樹明老師資源:B站shell腳本入門到精通(up主:Linux雲計算大佬)shell字符
  • Linux作業系統之Shell程序設計
    用戶在與Shell交互時所輸入的命令行必須符合Shell命令的語法和語義規範,才能夠被Shell理解並執行。Shell所使用的這種命令語言稱為Shell 語言。Shell語言不僅僅是一種交互式語言, 它還是一種可編程的程序設計語言。將若干個Shell命令行寫入個文件就構成了一個Shell程序,它可以被Shell逐條地解釋執行。
  • Linux主要shell命令詳解
    Bash放在/bin/bash中,它有許多特色,可以提供如命令補全、命令編輯和命令歷史表等功能,它還包含了很多C shell和Korn shell中的優點,有靈活和強大的編程接口,同時又有很友好的用戶界面。   C shell是一種比Bourne shell更適於編程的shell,它的語法與C語言很相似。 Linux為喜歡使用C shell的人提供了Tcsh。
  • Linux——Shell腳本的應用1(基礎)
    Shell腳本的應用(基礎)簡介:隨著linux系統在企業中的應用越來越多,伺服器的自動化管理也變得越來越重要。在linux伺服器的自動化維護工作中,除了計劃任務的設置以外,shell腳本的應用也是非常重要的一部分。
  • Shell腳本編程總結及速查手冊
    /bin/shecho "hello shell!"依國際慣例這裡以在終端裡列印一句hello shell!開始, 第一行的#!是一個約定標記, 它告訴腳本這段腳本需要什麼解釋器來執行. 第二行的echo命令則負責向屏幕上輸出一句話.
  • 【Linux基礎】bash shell基礎
    /bin/baship=192.168.11.20ping -c1 $ip &>/dev/nullif [ $? = 0 ];then    echo "host $ip is alive"else    echo "host $ip is down!!!"
  • Linux下高效編寫shell腳本的10個建議
    如果你還有一些其他更好的腳本編程經驗想要分享,在下面評論框分享出來吧。這條建議不但適合於shell腳本,對於其它程式語言同樣實用。這樣做的好處是可以幫助他人或者你自己後面閱讀腳本時能夠迅速了解腳本的功能,便於維護。試想下,如果有一天你的主管給了你一堆沒有注釋的代碼,你是不是很抓狂呢。shell腳本中,注釋一般以#開頭,後面跟著是注釋的內容。
  • 精心匯總的 24 道 shell 腳本面試題
    Q:4 如何將標準輸出和錯誤輸出同時重定向到同一位置?/bin/bash# This is a commandecho 「I am logged in as $USER」Q:20 如何讓 shell 就腳本得到來自終端的輸入?
  • 【Slog】shell編程基礎——列印
    所以最近通過專項的學習來補充腳本技能樹部分的shell編程部分,一般要求的腳本skill就只剩下一個Perl了,得再加把勁了。2.0 傳統藝能——Hello World 幾乎每一種程式語言的第一個程序都離不開「Hello World」,shell中的如下: #!
  • Linux Shell 流程控制
    ,可以參考:linux shell 邏輯運算符、邏輯表達式詳解shell命令,可以按照分號分割,也可以按照換行符分割。;elif [[ $scores -gt 80 ]]; thenecho "good!";elif [[ $scores -gt 60 ]]; thenecho "pass!";elseecho "no pass!"