分享shell編程中的幾個小技巧

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.