1、列印一些頭資訊
command << dilimiter
……
……
dilimiter
以分界符號dilimiter中的內容作為命令的標準輸入
常用在echo命令中,這樣就避免了沒輸出一行就要使用一個echo命令,同時,輸出格式的調整也相應變得簡單了。
例如: echo << something_message
**********************
hello, welcome to use my shell script
**********************
something_message
將在螢幕上輸出:
**********************
hello, welcome to use my shell script
**********************
2、利用<<的分解符號性質還可以自動選擇菜單或實現自動的ftp傳輸
也就是利用分解符號的性質自動選擇菜單。
例如: ./menu_choose >>output_file 2>&1 <<Choose
2
3
Y
Choose
則自動在執行指令碼的過程中一步步作出選擇:2,3,Y
<<這種性質決定了它是理想的訪問資料庫的有用工具,可以用它來輸入面對資料庫提示時所作的各種選擇。
3、建立一個長度為0的空檔案
執行 > file_name 命令或 touch file_name 命令。
4、一些常用的shell變數
$# 傳遞到指令碼的參數個數
$* 以一個單字串顯示所有向指令碼傳遞的參數(可大於9個)
$$ 指令碼啟動並執行當前進程的ID號
$! 後台啟動並執行最後一個進程的ID號
$@ 與$#相同,但使用時加引號,並在引號中返回每個參數
$- 顯示shell使用的當前選項
$? 顯示最後命令的退出狀態,0表示無錯誤(這個變數也常常用來列印輸出,在指令碼調試時標記某個shell命令或某個函數是否正確執行,但是要注意,$?記載的是最近的函數或命令的退出狀態,因此列印時應該立即列印以獲得正確的資訊)
$0的使用
在變數中有一種位置變數$n,用來存放函數調用或指令碼執行時傳入的參數,其中$0表示函數名或指令碼名,需要注意的是,這時的指令碼名傳遞的是包含全路徑的指令碼名。從$1-$9表示傳入的第一到第九個參數,這樣的參數表示不能多於九個,如果多於九個,可以使用下面將要提到的shift指令來讀取。
因為$0存放函數名或指令碼名,因此我們可以通過echo $0來輸出調用資訊,但是,由於存放的是全路徑名,我們可以利用一個shell命令來得到指令碼名,basename $0 將得到$0中名字的部分,而與之相反的,dirname $0將得到$0中路徑的部分。
5、Shift的運用
用head或tail指令指定查閱的行數
例如:查閱檔案前20行: head –20 file_name
查閱檔案後10行: tail –10 file_name