$# 是傳給腳本的參數個數 $0 是腳本自己的名字 $1 是傳遞給該shell腳本的第一個參數 $2 是傳遞給該shell腳本的第二個參數 $@ 是傳給腳本的全部參數的列表 $* 是以一個單字符串顯示全部向腳本傳遞的參數,與位置變量不一樣,參數可超過9個 $$ 是腳本運行的當前進程ID號 $! 是最後運行的後臺Process的PID $? 是顯示最後命令的退出狀態,0表示沒有錯誤,其餘表示有錯誤
腳本:java
#!/bin/bash # args test echo "title: $0" echo "total args: $#" echo "first args: $1" echo "second args: $2" echo "all args: $@" echo "all args: $*" echo "currnet pid:$$" echo "status: $?"
結果:shell
[root@localhost src]# sh java18 1 2 3
title: java18
total args: 3
first args: 1
second args: 2
all args: 1 2 3
all args: 1 2 3
currnet pid:4005
status: 0
-----------------------------------------------------------------------------------------------------
bash
區別:"@"和 "*"spa
相同點:都是引用全部參數.net
不一樣點:只有在雙引號中體現出來,假如腳本中運行時寫入了三個參數(1 2 3)則 「*」等價於「123」(至關於傳遞了一個參數)而「@」 等價於傳遞了「1」 「2」 「3」 (傳遞了三個參數)code
3"進程
腳本:字符串
#!/bin/bash # total args a=$# for((i=0;i<$a;i++)) do echo "$i" done echo "---- $ @----" for var in $@ do echo "$var" done echo "----$ *----" for va in $* do echo "$va" done echo "---- " $ @ "----" for var1 in "$@" do echo "$var1" done echo "---" "----" for va1 in "$*" do echo "$va1" done
運行結果:get
[root@localhost src]# sh java19 1 2 3
0
1
2
---- $ @----
1
2
3
----$ *----
1
2
3
---- $ @ ----
1
2
3
--- ----
1 2 3
it