SHELL 命令列引數簡介

2021-09-12 05:06:49 字數 1134 閱讀 7153

我們對於普通指令碼語言諸如perl python等,寫乙個指令碼程式,包裝命令列引數時,一般都是用getopt之類的;c語言也類似。

那麼,對於乙個shell指令碼,它本身的命令引數是什麼樣呢?

首先,shell指令碼程式設計和python等指令碼程式設計一樣可以使用引數;

其次,shell引數分為位置引數和內部引數;

其中,位置引數:是由系統提供的引數,就是我們一般說的某個陣列的第1,2,3...個元素;可以採用$i的形式獲得某個引數,顯然$0就是程式本身,$1就是第乙個引數; 這裡需要注意的是,即便你以sh ***.sh 來執行指令碼,$0仍然是***.sh ,而不是sh !這一點和我們的perl  python 都是一致的

內部引數

$0 ----- 當前程式的名稱,實際上是乙個內部引數,不同於$1,$2....因為它必須有!

$# ---- 傳遞給程式的總的引數數目,也就是那個傳說中的陣列大小

$? ---- 上乙個**或者shell程式在shell中退出的情況,如果正常退出則返回0,反之為非0值。

$* ---- 傳遞給程式的所有引數組成的字串。

$@---- 以"引數1" "引數2" ... 形式儲存所有引數

$$ ---- 本程式的(程序id號)pid

$! ---- 上乙個命令的pid

如此以來,即便用shell, 我們也可以寫出功能強大、互動友好的指令碼程式!!!

最後,附註一下python執行系統命令的兩種不同方式:

1 os.system(cmd) :直接乙個或者一組系統命令cmd;不返回執行輸出即結果;如果是在python的命令列下執行,則輸出被直接輸出。

比如: os.system('ls -l')

2 os.open(cmd[, mode='r' [, bufsize]]) :文件的注釋是從cmd開啟乙個pipe,或者開啟乙個pipe到cmd,並且返回輸出為乙個file物件!

比如: t = os.popen('ls *.gff').readlines() ; print t

ps: 結合以上兩個部分的內容,我們就可以靈活處理python指令碼和shell的互動了!!!

SHELL 命令列引數簡介

我們對於普通指令碼語言諸如perl python等,寫乙個指令碼程式,包裝命令列引數時,一般都是用getopt之類的 c語言也類似。那麼,對於乙個shell指令碼,它本身的命令引數是什麼樣呢?首先,shell指令碼程式設計和python等指令碼程式設計一樣可以使用引數 其次,shell引數分為位置引...

Shell的命令列引數

當你執行shell指令碼時,如 myshell.sh a b c d e f 其中,後部分的a b c d e f 是傳入shell指令碼myshell.sh的引數 在shell指令碼裡,我們可以通過這樣獲得傳入的引數 echo first arg is 1 echo tenth arg is 其中...

shell程式設計 命令列引數

1 獲取第1個引數 2 獲取第2個引數 獲取第10個引數 test.sh 2 3 test.sh 指令碼內容 var1 1 2 var2 2 3 var3 var1 var2 echo var3 6獲取超過第9個引數時要用花括號括起來,0 獲取當前檔案的指令碼名稱包括路徑 test.sh filep...