echo和Shell特殊變量:Shell $0, $#, $*, $@, $?, $$和命令行參數


  • echo

功能說明:顯示文字。

語 法:echo [-ne][字符串]或 echo [--help][--version]

補充說明:echo會將輸入的字符串送往標准輸出。輸出的字符串間以空白字符隔開,並在最后加上換行號。

參 數:-n 不要在最后自動換行

-e 若字符串中出現以下字符,則特別加以處理,而不會將它當成一般文字輸出:

\a 發出警告聲;

\b 刪除前一個字符;

\c 最后不加上換行符號;

\f 換行但光標仍舊停留在原來的位置;

\n 換行且光標移至行首;

\r 光標移至行首,但不換行;

\t 插入tab;

\v 與\f相同;

\\ 插入\字符;

\nnn 插入nnn(八進制)所代表的ASCII字符;

--help 顯示幫助

--version 顯示版本信息

每一個shell支持的echo指令可能都不太相同。

-n 不輸出最后的\n

-e解釋轉義字符

-E不解釋轉義字符

  • 示例1:輸入一行文本並且在顯示在標准輸出上

xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ echo Welcome to Linux world Welcome to Linux world 
  • 示例2:輸出一個聲明的變量值

xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ x=13 xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ echo the value of x=$x the value of x=13 
  • 示例3:使用"\b"選項

‘-e‘后帶上'\b'會刪除字符間的所有空格。

注意: Linux中的選項‘-e‘扮演了轉義字符反斜線的翻譯器。

  1. $ echo -e "Tecmint \bis \ba \bcommunity \bof \bLinux \bNerds"
  2.  
  3. TecmintisacommunityofLinuxNerds
  • 示例4:使用"\n"選項

‘-e‘后面的帶上‘\n’行會在遇到的地方作為新的一行

  1. $ echo -e "Tecmint \nis \na \ncommunity \nof \nLinux \nNerds"
  2.  
  3. Tecmint
  4. is
  5. a
  6. community
  7. of
  8. Linux
  9. Nerds
  • 5. 使用‘\t‘選項

‘-e‘后面跟上‘\t’會在空格間加上水平制表符。

  1. $ echo -e "Tecmint \tis \ta \tcommunity \tof \tLinux \tNerds"
  2.  
  3. Tecmintis a community of LinuxNerds

 

  • 6. 也可以同時使用換行‘\n‘與水平制表符‘\t‘

  1. $ echo -e "\n\tTecmint \n\tis \n\ta \n\tcommunity \n\tof \n\tLinux \n\tNerds"
  2.  
  3. Tecmint
  4. is
  5. a
  6. community
  7. of
  8. Linux
  9. Nerds
  • 7. 使用‘\v‘選項

-e‘后面跟上‘\v’會加上垂直制表符。

  1. $ echo -e "\vTecmint \vis \va \vcommunity \vof \vLinux \vNerds"
  2.  
  3. Tecmint
  4. is
  5. a
  6. community
  7. of
  8. Linux
  9. Nerds
  • 8. 也可以同時使用換行‘\n‘與垂直制表符‘\v‘

  1. $ echo -e "\n\vTecmint \n\vis \n\va \n\vcommunity \n\vof \n\vLinux \n\vNerds"
  2.  
  3.  
  4. Tecmint
  5.  
  6. is
  7.  
  8. a
  9.  
  10. community
  11.  
  12. of
  13.  
  14. Linux
  15.  
  16. Nerds
  • 9. 使用‘\r‘選項

‘-e‘后面跟上‘\r’來指定輸出中的回車符。(LCTT 譯注:會覆寫行開頭的字符)

  1. $ echo -e "Tecmint \ris a community of Linux Nerds"
  2.  
  3. is a community of LinuxNerds
  • 10. 使用‘\c‘選項

-e‘后面跟上‘\c’會抑制輸出后面的字符並且最后不會換新行。

  1. $ echo -e "Tecmint is a community \cof Linux Nerds"
  2.  
  3. Tecmintis a community @tecmint:~$
  • 11. ‘-n‘會在echo完后不會輸出新行

  1. $ echo -n "Tecmint is a community of Linux Nerds"
  2. Tecmintis a community of LinuxNerds@tecmint:~/Documents$
  • 12. 使用‘\a‘選項

‘-e‘后面跟上‘\a’選項會聽到聲音警告。

  1. $ echo -e "Tecmint is a community of \aLinux Nerds"
  2. Tecmintis a community of LinuxNerds
  • 13. 使用echo命令打印所有的文件和文件夾(ls命令的替代)

  1. $ echo *
  2.  
  3. 103.odt103.pdf104.odt104.pdf105.odt105.pdf106.odt106.pdf107.odt107.pdf108a.odt 108.odt108.pdf109.odt109.pdf110b.odt 110.odt110.pdf111.odt111.pdf112.odt112.pdf113.odt linux-headers-3.16.0-customkernel_1_amd64.deb linux-image-3.16.0-customkernel_1_amd64.deb network.jpeg
  • 14. 打印制定的文件類型

比如,讓我們假設你想要打印所有的‘.jpeg‘文件,使用下面的命令。

  1. $ echo *.jpeg
  2.  
  3. network.jpeg
  • 15. echo可以使用重定向符來輸出到一個文件而不是標准輸出

  1. $ echo "Test Page"> testpage
  2.  
  3. ## Check Content
  4. avi@tecmint:~$ cat testpage
  5. TestPage

echo 選項列表

選項 描述
-n 不輸出末尾的換行符。
-e 啟用反斜線轉義。
\b 退格
\\ 反斜線
\n 新行
\r 回車
\t 水平制表符
\v 垂直制表符
  • echo+shell中的特殊變量

變量名只能包含數字、字母和下划線,因為某些包含其他字符的變量有特殊含義,這樣的變量被稱為特殊變量。

例如,$ 表示當前Shell進程的ID,即pid,看下面的代碼:

xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ echo $$ 15415 

特殊變量列表

變量 含義
$0 當前腳本的文件名
$n 傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是$1,第二個參數是$2。
$# 傳遞給腳本或函數的參數個數。
$* 傳遞給腳本或函數的所有參數。
$@ 傳遞給腳本或函數的所有參數。被雙引號(" ")包含時,與 $* 稍有不同,下面將會講到。
$? 上個命令的退出狀態,或函數的返回值。
$$ 當前Shell進程ID。對於 Shell 腳本,就是這些腳本所在的進程ID。

命令行參數

運行腳本時傳遞給腳本的參數稱為命令行參數。命令行參數用 $n 表示,例如,$1 表示第一個參數,$2 表示第二個參數,依次類推。

請看下面的代碼:

建立一個test.sh文件,寫入以下內容:

 1     #!/bin/bash 2 echo "File Name: $0" 3 echo "First Parameter : $1" 4 echo "First Parameter : $2" 5 echo "Quoted Values: $@" 6 echo "Quoted Values: $*" 7 echo "Total Number of Parameters : $#" 

然后chmod +x test.sh改變文件的權限,運行結果:

xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ vim test.sh xc@xc-HP-Pavilion-dv4-Notebook-PC:~/workspace/filetype$ ./test.sh XC 666 File Name: ./test.sh First Parameter : XC First Parameter : 666 Quoted Values: XC 666 Quoted Values: XC 666 Total Number of Parameters : 2 

 


免責聲明!

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



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