Linux學習——echo和read命令用法


轉載自http://www.runoob.com/linux/linux-comm-read.html

http://www.178linux.com/76331

echo命令

本文列舉了echo命令的幾個常用用法並加以實例說明,以作回顧、參考。

echo命令常用作打印輸出字符串,根據echo幫助文件可以獲得以下信息:

       語法 echo [-neE][arg…]

       三個參數:

                       -n : 關閉輸出文字時的自動換行

                       -e : 開啟轉義字符功能( \ )

                       -E : (默認)關閉轉義字符功能( \ )

       使用-e選項時,如果在字符串中鍵入以下字符,程序不會將之當成一般字符串輸出,而是會使用其轉義功能:

       • \a 發出警告聲;
       • \b 刪除前一個字符;
       • \c 最后不加換行符號並抑制字符后輸出;
       • \f 換行但光標仍舊停留在原來的位置;
       • \n 換行且光標移至行首;
       • \r 光標移至行首,但不換行;
       • \t 水平制表符;
       • \v 垂直制表符;
       • \\ 插入\字符;
       • \0nnn 插入nnn(八進制)所代表的ASCII字符;NNN為0到3位八進制數字
       • \xHH 插入HH(十六進制)所代表的ASCII字符;HH為1到2位十六進制數字

      實例

     

1.打印輸出一行字符串 

linux  echo命令用法實例

 

 2. 使用”\b” 選項

     相當於退格符    

linux  echo命令用法實例

 

  3. 使用”\c” 選項

    不打印輸出\c 以后的字符,並且結果不換行(使用-n 選項只是輸出結果不換行)       

linux  echo命令用法實例
 

 4. 使用”\n” 選項

          相當於在\n 后插入新行        

linux  echo命令用法實例
 

 5. 使用”\r” 選項

         回車,光標移至首位,但不換行              

linux  echo命令用法實例

 

 6. 使用”\0NNN” 選項

          返回八進制多代表的ASCII字符        

linux  echo命令用法實例

 

7. 使用”\xHH” 選項

          返回16進制數所代表的ASCII字符

linux  echo命令用法實例
 


 8. 打印輸出bash環境變量       

linux  echo命令用法實例

 

      延伸:
      單引號”; 雙引號””; 反向單引號引用強弱程度比較
         

linux  echo命令用法實例

 

      從運行結果不難看出,”單引號是強引用,不完成變量替換;反向單引號是弱引用,可以實現命令和變量替換;””雙引號強弱程度據兩者中間,只可以實現變量替換

 

read命令

 

Linux read命令用於從標准輸入讀取數值。

read 內部命令被用來從標准輸入讀取單行數據。這個命令可以用來讀取鍵盤輸入,當使用重定向的時候,可以讀取文件中的一行數據。

 語法

read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

 

參數說明:

  • -a 后跟一個變量,該變量會被認為是個數組,然后給其賦值,默認是以空格為分割符。
  • -d 后面跟一個標志符,其實只有其后的第一個字符有用,作為結束的標志。
  • -p 后面跟提示信息,即在輸入前打印提示信息。
  • -e 在輸入的時候可以時候命令補全功能。
  • -n 后跟一個數字,定義輸入文本的長度,很實用。
  • -r 屏蔽\,如果沒有該選項,則\作為一個轉義字符,有的話 \就是個正常的字符了。
  • -s 安靜模式,在輸入字符時不再屏幕上顯示,例如login時輸入密碼。
  • -t 后面跟秒數,定義輸入字符的等待時間。
  • -u 后面跟fd,從文件描述符中讀入,該文件描述符可以是exec新開啟的。

實例

1、簡單讀取

#!/bin/bash
#這里默認會換行  
echo "輸入網站名: "  
#讀取從鍵盤的輸入  
read website  
echo "你輸入的網站名是 $website"  
exit 0  #退出

測試結果為:

輸入網站名: 
www.runoob.com
你輸入的網站名是 www.runoob.com

 

2、-p 參數,允許在 read 命令行中直接指定一個提示。

#!/bin/bash
read -p "輸入網站名:" website
echo "你輸入的網站名是 $website" 
exit 0

測試結果為:

輸入網站名:www.runoob.com
你輸入的網站名是 www.runoob.com

 

3、-t 參數指定 read 命令等待輸入的秒數,當計時滿時,read命令返回一個非零退出狀態。

#!/bin/bash
if read -t 5 -p "輸入網站名:" name
then
    echo "你輸入的網站名是 $website"
else
    echo "\n抱歉,你輸入超時了。"
fi
exit 0

執行程序不輸入,等待 5 秒后:

輸入網站名:
抱歉,你輸入超時了

 

4、除了輸入時間計時,還可以使用 -n 參數設置 read 命令計數輸入的字符。當輸入的字符數目達到預定數目時,自動退出,並將輸入的數據賦值給變量。

#!/bin/bash
read -n1 -p "Do you want to continue [Y/N]?" answer
case $answer in
Y | y)
      echo "fine ,continue";;
N | n)
      echo "ok,good bye";;
*)
     echo "error choice";;

esac
exit 0

該例子使用了-n 選項,后接數值 1,指示 read 命令只要接受到一個字符就退出。只要按下一個字符進行回答,read 命令立即接受輸入並將其傳給變量,無需按回車鍵。

只接收 2 個輸入就退出:

#!/bin/bash
read -n2 -p "請隨便輸入兩個字符: " any
echo "\n您輸入的兩個字符是:$any"
exit 0

執行程序輸入兩個字符:

請隨便輸入兩個字符: 12 您輸入的兩個字符是:12

 

5、-s 選項能夠使 read 命令中輸入的數據不顯示在命令終端上(實際上,數據是顯示的,只是 read 命令將文本顏色設置成與背景相同的顏色)。輸入密碼常用這個選項。

#!/bin/bash
read  -s  -p "請輸入您的密碼:" pass
echo "\n您輸入的密碼是 $pass"
exit 0

執行程序輸入密碼后是不顯示的:

請輸入您的密碼:
您輸入的密碼是 runoob

 

6.讀取文件

每次調用 read 命令都會讀取文件中的 "一行" 文本。當文件沒有可讀的行時,read 命令將以非零狀態退出。

通過什么樣的方法將文件中的數據傳給 read 呢?使用 cat 命令並通過管道將結果直接傳送給包含 read 命令的 while 命令。

測試文件 test.txt 內容如下:

123
456
runoob

測試代碼:

#!/bin/bash
count=1    # 賦值語句,不加空格
cat test.txt | while read line      # cat 命令的輸出作為read命令的輸入,read讀到>的值放在line中
do
   echo "Line $count:$line"
   count=$[ $count + 1 ]          # 注意中括號中的空格。
done
echo "finish"
exit 0

執行結果為:

Line 1:123
Line 2:456
Line 3:runoob
finish

 

 一個簡單的實現寫博客功能的腳本

echo "Enter your title of your blog:"
read -r b_title 
echo -e $b_title >> blog.txt
date +"%F %a %R" >> blog.txt
echo "Enter your body of your blog:" 
read -r b_body
echo -e "$b_body" >> blog.txt
echo >> blog.txt
#echo -ne "\n" >> blog.txt
echo "Your blog has been saved."

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM