在閱讀別人shell腳本的時候,我們可能會看到類似$0這些變量符號。那么他們是什么意思呢?
變量說明
$$
shell本身的pid(processid)
$!
shell最后運行的后臺process的pid
$?
最后運行的命令的結(jié)束代碼(返回值)
$-
使用set命令設(shè)定的flag一覽
$*
所有參數(shù)列表。如”$*”用「”」括起來的情況、以”$1 $2 … $n”的形式輸出所有參數(shù)。
$@
所有參數(shù)列表。如”$@”用「”」括起來的情況、以”$1″ “$2” … “$n” 的形式輸出所有參數(shù)。
$#
添加到shell的參數(shù)個數(shù)
$0
shell本身的文件名
$1~$n
添加到shell的各參數(shù)值。$1是第1參數(shù)、$2是第2參數(shù)…。
腳本舉例
我們先寫一個簡單的腳本,執(zhí)行以后再解釋各個變量的意義
# touch variable
# vi variable
腳本內(nèi)容如下:
#!/bin/sh
echo “number:$#”
echo “scname:$0”
echo “first :$1”
echo “second:$2”
echo “argume:$@”
保存退出
賦予腳本執(zhí)行權(quán)限
# chmod x variable
執(zhí)行腳本
# ./variable aa bb
number:2
scname:./variable
first: aa
second:bb
argume:aa bb
結(jié)果分析
通過顯示結(jié)果可以看到:
$# 是傳給腳本的參數(shù)個數(shù)
$0 是腳本本身的名字
$1是傳遞給該shell腳本的第一個參數(shù)
$2是傳遞給該shell腳本的第二個參數(shù)
$@ 是傳給腳本的所有參數(shù)的列表