shell指令碼中的$預設變數
有一些內部變數,內部變數是linux所提供的一種特殊型別的變數,這類變數在程式中用來作出判斷。在shell程式內這類變數的值是不能修改的。
表示方法 描述
$n $1 表示第乙個引數,$2 表示第二個引數 ...
$# 命令列引數的個數
$0 當前程式的名稱
$? 前乙個命令或函式的返回碼,返回0代表成功
$* 以"引數1 引數2 ... " 形式儲存所有引數
$@ 以"引數1" "引數2" ... 形式儲存所有引數
$$ 本程式的(程序id號)pid
我們先寫乙個簡單的指令碼,執行以後再解釋各個變數的意義
# touch variable # vi variable
指令碼內容如下:
[plain]
#!/bin/sh
echo "number:$#"
echo "scname:$0"
echo "first :$1"
echo "second:$2"
echo "argume:$@"
echo "show parm list:$*"
echo "show process id:$$"
echo "show precomm stat: $?"
儲存退出
賦予指令碼執行許可權
# chmod +x variable
執行指令碼
# ./variable aa bb
結果如下:
[plain]
number:2
scname:./variable
first:aa
second:bb
argume:aa bb
show parm list:aa bb
show process id:24544
show precomm stat:0
通過顯示結果可以看到:
$# 是傳給指令碼的引數個數
$0 是指令碼本身的名字
$1 是傳遞給該shell指令碼的第乙個引數 $2 是傳遞給該shell指令碼的第二個引數
$@ 是傳給指令碼的所有引數的列表
$* 是以乙個單字串顯示所有向指令碼傳遞的引數,與位置變數不同,引數可超過9個
$$ 是指令碼執行的當前程序id號
$? 是顯示最後命令的退出狀態,0表示沒有錯誤,其他表示有錯誤
shell指令碼中的變數
1 在命令列中和指令碼中,變數定義得格式 name value 左右兩邊不能有空格,否則會當做命令來對待,輸出乙個command not found echo name echo 列印出變數,引用變數使用 name.2 單引號和雙引號 語法 和php中相同 雙引號仍然可以保有變數的內容,但單引號內僅...
shell指令碼中的變數
變數就是記憶體一片區域的位址 命令無法操作一直變化的目標 用一串固定的字元來表示不固定的目標可以解決此問題 export宣告 env顯示所有環境變數 echo path export a 1 在環境關閉後變數失效 字元 數字 轉譯單個字元 弱引用,批量轉譯個數字元 不能轉譯 強引用 表示當前程序的i...
shell指令碼中的變數
後記面試中很重要 在系統中,當我們執行 bin ls時與ls命令結果並不相同,因為ls是已經經過加工過的命令。alias xie vim 臨時設定,開啟了新的shell就會失效 vim bashrc 只對當前使用者生效 alias xie vim source bashrc vim etc bash...