Shell變量名使用的特殊字符 [轉]

Shell變量名使用的特殊字符 [轉]

$# 傳送給命令Shell的參數個數
$- 在Shell啓動或使用set命令時提供選項
$? 上一條命令執行後返回的值
$$ 當前shell的進程號
$! 上一個子進程的進程號
$@ 所有的參數,每個都用雙括號括起
$* 所有參數,用雙括號括起
$n 位置參數值,n表示位置
$0 當前shell名 

$1..$9 第N個參數

實例
我在公司使用tcl/tk腳本進行編程,但在unix或linux環境中並不能保證每次tcl的解釋器都被安裝在同一個目錄下,如/bin,所以爲了程序不至於每次移植時都要修改第一句的#!/bin/tclsh到相應的安裝目錄,由於sh安裝的目錄相對固定,故採用以下方法:

#!/bin/sh
#become a dmh_wish script /
  exec dmh_wish -notk -f 
"$0" "$@"
  
......


第一句 #!/bin/sh 使文件被sh解釋器解釋
第二句 爲註釋,不執行
第三句 $0指當前shell名,#@爲所有參數,所以這句使文件再次被tcl/tk的解釋器解釋運行。這次運行時,第一句"#!/bin/sh" 被tcl/tk解釋器作爲註釋,不予執行;第二句也爲註釋,但由於其最後有一個"/",故根據tcl的語法規則,第三句語句被當作和第二句爲同一命令,故也爲註釋,不予執行;這樣就不會再次執行該文件,而是繼續執行隨後的tcl代碼。

發佈了81 篇原創文章 · 獲贊 9 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章