-
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‘扮演了轉義字符反斜線的翻譯器。
- $ echo -e "Tecmint \bis \ba \bcommunity \bof \bLinux \bNerds"
- TecmintisacommunityofLinuxNerds
-
示例4:使用"\n"選項
‘-e‘后面的帶上‘\n’行會在遇到的地方作為新的一行
- $ echo -e "Tecmint \nis \na \ncommunity \nof \nLinux \nNerds"
- Tecmint
- is
- a
- community
- of
- Linux
- Nerds
-
5. 使用‘\t‘選項
‘-e‘后面跟上‘\t’會在空格間加上水平制表符。
- $ echo -e "Tecmint \tis \ta \tcommunity \tof \tLinux \tNerds"
- Tecmintis a community of LinuxNerds
-
6. 也可以同時使用換行‘\n‘與水平制表符‘\t‘
- $ echo -e "\n\tTecmint \n\tis \n\ta \n\tcommunity \n\tof \n\tLinux \n\tNerds"
- Tecmint
- is
- a
- community
- of
- Linux
- Nerds
-
7. 使用‘\v‘選項
-e‘后面跟上‘\v’會加上垂直制表符。
- $ echo -e "\vTecmint \vis \va \vcommunity \vof \vLinux \vNerds"
- Tecmint
- is
- a
- community
- of
- Linux
- Nerds
-
8. 也可以同時使用換行‘\n‘與垂直制表符‘\v‘
- $ echo -e "\n\vTecmint \n\vis \n\va \n\vcommunity \n\vof \n\vLinux \n\vNerds"
- Tecmint
- is
- a
- community
- of
- Linux
- Nerds
-
9. 使用‘\r‘選項
‘-e‘后面跟上‘\r’來指定輸出中的回車符。(LCTT 譯注:會覆寫行開頭的字符)
- $ echo -e "Tecmint \ris a community of Linux Nerds"
- is a community of LinuxNerds
-
10. 使用‘\c‘選項
-e‘后面跟上‘\c’會抑制輸出后面的字符並且最后不會換新行。
- $ echo -e "Tecmint is a community \cof Linux Nerds"
- Tecmintis a community @tecmint:~$
-
11. ‘-n‘會在echo完后不會輸出新行
- $ echo -n "Tecmint is a community of Linux Nerds"
- Tecmintis a community of LinuxNerds@tecmint:~/Documents$
-
12. 使用‘\a‘選項
‘-e‘后面跟上‘\a’選項會聽到聲音警告。
- $ echo -e "Tecmint is a community of \aLinux Nerds"
- Tecmintis a community of LinuxNerds
-
13. 使用echo命令打印所有的文件和文件夾(ls命令的替代)
- $ echo *
- 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‘文件,使用下面的命令。
- $ echo *.jpeg
- network.jpeg
-
15. echo可以使用重定向符來輸出到一個文件而不是標准輸出
- $ echo "Test Page"> testpage
- ## Check Content
- avi@tecmint:~$ cat testpage
- 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