echo 在linux幫助文檔的描述是顯示一行文本,相似於python和java等編程語言中的print語句,實際上它的做用不單單如此。能夠使用man echo查看詳細的參數說明。java
example1: 顯示一行文本,任何特殊字符都不會被轉義python
[root@aliyun-hk1 linux-shell-test]# echo hello\nworld hellonworld [root@aliyun-hk1 linux-shell-test]# echo 'hello\nworld' hello\nworld [root@aliyun-hk1 linux-shell-test]# echo hello world hello world [root@aliyun-hk1 linux-shell-test]#
example2: 顯示一行文本,不要輸出末尾的換行符linux
[root@aliyun-hk1 linux-shell-test]# echo -n hello world hello world[root@aliyun-hk1 linux-shell-test]# echo hello world hello world
example3: 顯示一行文本,啓用反斜槓後面的轉義字符shell
[root@aliyun-hk1 linux-shell-test]# echo -e 'hello\nworld' hello world [root@aliyun-hk1 linux-shell-test]# echo -e 'hello\tworld' hello world
example4: 顯示一行文本,禁用反斜槓後面的轉義字符,echo默認參數編程
[root@aliyun-hk1 linux-shell-test]# echo -E 'hello\nworld' hello\nworld [root@aliyun-hk1 linux-shell-test]# echo -E 'hello\tworld' hello\tworld
example5: echo與cat的差別對比,echo只用於輸出文本,cat用於輸出文件內容或者從標準輸入中輸出網絡
[root@aliyun-hk1 linux-shell-test]# echo hello hello [root@aliyun-hk1 linux-shell-test]# cat hello cat: hello: No such file or directory [root@aliyun-hk1 linux-shell-test]# echo /etc/hostname /etc/hostname [root@aliyun-hk1 linux-shell-test]# cat /etc/hostname aliyun-hk1 [root@aliyun-hk1 linux-shell-test]# echo hello|cat hello [root@aliyun-hk1 linux-shell-test]#
examle6: echo在自動化構建中的做用,例如咱們能夠將DB中返回的數據格式化成ansible須要的數據,經過with_lines 傳入某個task並循環使用。在某些狀況下,從網絡、DB等方式獲取的標準輸出,能夠經過echo結合awk和grep等實現結果的格式化或數據清洗,而後用到後續的腳本中。編程語言
[root@aliyun-hk1 linux-shell-test]# echo -en 'name phone addr\nrobin 13712345678 CN\ntom 13812345678 HK\n' name phone addr robin 13712345678 CN tom 13812345678 HK [root@aliyun-hk1 linux-shell-test]# echo -en 'name phone addr\nrobin 13712345678 CN\ntom 13812345678 HK\n'|awk 'NR>1 {print $1}' robin tom - name: show the items from DB debug: msg: "{{ item }}" with_lines: "echo -en 'name phone addr\nrobin 13712345678 CN\ntom 13812345678 HK\n'|awk 'NR>1 {print $1}' TASK [show the items from DB] ****************************************************************************************************************************************************************************************************************ok: [localhost] => (item=robin) => { "msg": "robin" } ok: [localhost] => (item=tom) => { "msg": "tom" }
example7: echo還能夠將獲取到並格式化好的數據寫入到一個文件,等待後續使用。debug
[root@aliyun-hk1 ansible-test]# echo -en 'name phone addr\nrobin 13712345678 CN\ntom 13812345678 HK\n'|awk 'NR>1 {print $1}' > DataFromDB1.txt [root@aliyun-hk1 ansible-test]# cat DataFromDB1.txt robin tom [root@aliyun-hk1 ansible-test]#