Linux中变量#,@,0,1,2,*,$$,$?的含义
$# 是傳給腳本的參數個數
$0 是腳本本身的名字
$1 是傳遞給該shell腳本的第一個參數
$2 是傳遞給該shell腳本的第二個參數
$@ 是傳給腳本的所有參數的列表
$* 是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過9個
$$ 是腳本運行的當前進程ID號
$? 是顯示最后命令的退出狀態,0表示沒有錯誤,其他表示有錯誤
$-記錄著當前設置的shell選項
? 區別:@* ? 相同點:都是引用所有參數
- 不同點:只有在雙引號中體現出來。假設在腳本運行時寫了三個參數(分別存儲在12 3)則"*" 等價于 “12 3"(傳遞了一個參數);而“@" 等價于 "1""2" "$3"(傳遞了三個參數)
例子一
##dels.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: $?"
執行結果
[@jihite]$ sh del.sh 1 2 3
number:3
scname:del.sh
first: 1
second:2
argume:1 2 3
show parm list:1 2 3
show process id:21057
show precomm stat: 0
例子二
#!/bin/sh
num=$#
name=$0
echo "number:$num"
echo "scname:$name"
echo $0
echo $1
echo $2
for ((i=0; i<$num; i++))
do
? ? echo "$i"
done
echo "argume:$@"
for key in $@
do
? ? echo $key
done
echo "-----------------"
for key in "$@"
do
? ? echo $key
done
echo "-----------------------------"
for key2 in $*
do?
? ? echo $key2
done
echo "-----------------"
for key2 in "$*"
do?
? ? echo $key2
done
echo "show process id:$$"
cho
echo "show precomm stat: $?"
執行結果
[@jihite]$ sh del.sh a b ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
number:2
scname:del.sh
del.sh
a
b
0
1
argume:a b
a
b
-----------------
a
b
-----------------------------
a
b
-----------------
a b
show process id:23582
del.sh: line 37: cho: command not found
show precomm stat: 127
問題:
echo #0 #1 能不能用 $i 表示呢?
$-記錄著當前設置的shell選項,himBH是默認值,5個字母分別有各自含義。解釋如下:
- h:hashall,打開這個選項后,Shell 會將命令所在的路徑記錄下來,避免每次都要查詢。舉例:當h選項開啟時,如果將某個自定義命令從/usr/bin/目錄下移動到/usr/local/bin/,再運行,會提示無此命令。而當通過set +h將h選項關閉后,上述情況就不會出現。
- i:interactive-comments,包含這個選項說明當前的 shell 是一個交互式的 shell。所謂的交互式shell,就是輸入命令后,shell解釋執行,然后返回一個結果。在腳本中,i選項是關閉的。
- m:monitor,打開監控模式,就可以通過Job control來控制進程的停止、繼續,后臺或者前臺執行等。
- B:braceexpand,大括號擴展。舉例如下:
lenovo@lenovo-DK ~
$ ls
A_File
?
lenovo@lenovo-DK ~
$ cp A_File{,.back_up}
?
lenovo@lenovo-DK ~
$ ls
A_File? A_File.back_up
? ? ? ? 如果關閉B選項,那么shell就不會將大括號擴展。
? ? 5.? H:history,Shell 會把我們執行的命令記錄下來,可以通過 history 命令查看,每一行是序號 + 執行的命令,在 shell 退出時,會將這些信息保存到~/.bash_history 文件中。如果H選項打開,就可以展開歷史列表中的命令,可以通過!感嘆號來完成,例如"!!"返回上最近的一個歷史命令,"!n"返回第 n 個歷史命令,等等。
總結
以上是生活随笔為你收集整理的Linux中变量#,@,0,1,2,*,$$,$?的含义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 既中单又肉的有哪些。多说点
- 下一篇: 喋血复仇黄金M4皮肤怎么获得