1.$0 獲取當前執行的shell腳本的文件名,包括路徑。
[root@usr001 ~]# vi test.sh
[root@usr001 ~]# cat test.sh
echo $0
[root@usr001 ~]# sh test.sh
test.sh
[root@usr001 ~]# pwd
/root
[root@usr001 ~]# sh /root/test.sh
/root/test.sh
[root@usr001 ~]#
2.$n 獲取當前執行的shell腳本的第n個參數值,n=1..9,當n爲0
時表示腳本的文件名,若是n大於9就要用大括號括起來${10}.
[root@usr001 ~]# seq -s " $" 0 10
0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10
[root@usr001 ~]# seq 9|sed 's#[0-9]#$&#g'
$1
$2
$3
$4
$5
$6
$7
$8
$9shell
[root@usr001 ~]# seq -s " $" 1 10|sed '/1/s/1/$1/'
$1 $2 $3 $4 $5 $6 $7 $8 $9 $10
[root@usr001 ~]# seq -s " $" 1 10|sed '/1/s/2/$1/'
1 $$1 $3 $4 $5 $6 $7 $8 $9 $10
[root@usr001 ~]# seq -s " $" 1 10|sed '/1/s/3/$1/'
1 $2 $$1 $4 $5 $6 $7 $8 $9 $10
[root@usr001 ~]#
[root@usr001 ~]# seq -s " $" 1 10|sed '/1/s/10/{10}/'|sed ide
'/1/s/1/$1/'
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
[root@usr001 ~]#
[root@usr001 ~]# sh n.sh kk ff
kk ff
[root@usr001 ~]# sh n.sh seq -s " " 1 10
1 2 3 4 5 6 7 8 9 10
[root@usr001 ~]# sh n.sh seq -s " " 1 9
1 2 3 4 5 6 7 8 9
[root@usr001 ~]# sh n.sh 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
[root@usr001 ~]#
3.$# 獲取當前shell命令行中參數的總個數。
[root@usr001 ~]# vi n.sh
[root@usr001 ~]# sh n.sh 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
8
[root@usr001 ~]# sh n.sh seq -s " " 1 9
1 2 3 4 5 6 7 8 9
9
[root@usr001 ~]# sh n.sh "1 2 3 4 5 6 7 8"
1 2 3 4 5 6 7 8
1
[root@usr001 ~]# cat b.sh
dirname $0
basename $0
[root@usr001 ~]# sh b.sh
.
b.sh
[root@usr001 ~]# sh /root/b.sh
/root
b.sh
4.$? 獲取執行上一個指令的返回值(0爲成功,非零爲失敗)
2 權限拒絕 1~125 表示運行失敗,腳本命令、系統命令錯誤或參
數傳遞錯誤; 126 找到該命令了,可是沒法執行。 127 未找到要
運行的命令; 128 命令被系統強制結束。
提示:在腳本調用,通常用exit 0,函數return 0.
5.$$ 獲取當前shell的進程號(PID)。
[root@usr001 ~]# cat a.log |cut -c1-4|xargs kill函數
[root@usr001 ~]# cat all.sh
echo '1.' $0
echo '2.' '$1'=$1 '$2'=$2 "\$3=$3"
echo '3.' $*
echo '4.' $#
echo '5.' $$
sleep 2 &
echo '6.' $!
echo '7.' $?
echo '8.' $@
echo '9.' $_
[root@usr001 ~]# sh all.sh xiaoming hanmei lilei命令行