特殊變量
1.$n
語法:$n
功能描述:n為數(shù)字,$0代表該腳本名稱,$1-$9代表第一到第九個(gè)參數(shù),十以上的參數(shù)需要用大括號(hào)包含,如${10}
案例:
(1)創(chuàng)建parameter.sh :
[root@localhost shelldata]# touch parameter.sh
[root@localhost shelldata]# chmod u+x parameter.sh
(2)編輯腳本為:
#!/bin/bash
echo "下面輸出:腳本名稱+第一個(gè)參數(shù)名+第二個(gè)參數(shù)名(參數(shù)在調(diào)用腳本時(shí)給值)"
echo "$0 $1 $2"
(3)調(diào)用腳本:
[root@localhost shelldata]# ./parameter.sh
下面輸出:腳本名稱+第一個(gè)參數(shù)名+第二個(gè)參數(shù)名(參數(shù)在調(diào)用腳本時(shí)給值)
./parameter.sh
[root@localhost shelldata]# ./parameter.sh hello world
下面輸出:腳本名稱+第一個(gè)參數(shù)名+第二個(gè)參數(shù)名(參數(shù)在調(diào)用腳本時(shí)給值)
./parameter.sh hello world
2.$#
語法:$#
功能描述:獲取所有輸入?yún)?shù)個(gè)數(shù),常用于循環(huán)
案例:
(1)編輯parameter.sh 為
#!/bin/bash
echo "下面輸出:腳本名稱+第一個(gè)參數(shù)名+第二個(gè)參數(shù)名(參數(shù)在調(diào)用腳本時(shí)給值)"
echo "$0 $1 $2"
echo "參數(shù)個(gè)數(shù):" $#
(2)調(diào)用:
[root@localhost shelldata]# ./parameter.sh
下面輸出:腳本名稱+第一個(gè)參數(shù)名+第二個(gè)參數(shù)名(參數(shù)在調(diào)用腳本時(shí)給值)
./parameter.sh
參數(shù)個(gè)數(shù): 0
[root@localhost shelldata]# ./parameter.sh hello world
下面輸出:腳本名稱+第一個(gè)參數(shù)名+第二個(gè)參數(shù)名(參數(shù)在調(diào)用腳本時(shí)給值)
./parameter.sh hello world
參數(shù)個(gè)數(shù): 2
[root@localhost shelldata]# ./parameter.sh hello world my
下面輸出:腳本名稱+第一個(gè)參數(shù)名+第二個(gè)參數(shù)名(參數(shù)在調(diào)用腳本時(shí)給值)
./parameter.sh hello world
參數(shù)個(gè)數(shù): 3
由上面可以看出$#獲取的參數(shù)個(gè)數(shù)為實(shí)際傳入的參數(shù)個(gè)數(shù)。
3. $* , $@
語法及功能:
\$* : 這個(gè)變量代表命令行中所有的參數(shù),$*把所有的參數(shù)看成一個(gè)整體
\$@ : 這個(gè)變量也代表命令行中所有的參數(shù),不過$@把每個(gè)參數(shù)區(qū)分對(duì)待
案例:
(1)編輯parameter.sh 為
#!/bin/bash
echo "下面輸出:腳本名稱+第一個(gè)參數(shù)名+第二個(gè)參數(shù)名(參數(shù)在調(diào)用腳本時(shí)給值)"
echo "$0 $1 $2"
echo "參數(shù)個(gè)數(shù):" $#
echo $*
echo $@
(2)調(diào)用
[root@localhost shelldata]# ./parameter.sh hello world mytest
下面輸出:腳本名稱+第一個(gè)參數(shù)名+第二個(gè)參數(shù)名(參數(shù)在調(diào)用腳本時(shí)給值)
./parameter.sh hello world
參數(shù)個(gè)數(shù): 3
hello world mytest
hello world mytest
4.$?
語法:$?
功能描述:最后一次執(zhí)行的命令的返回狀態(tài)。如果這個(gè)變量的值為0,證明上一個(gè)命令正確執(zhí)行;如果這個(gè)變量的值為非0(具體是哪個(gè)數(shù),由命令自己來決定),則證明上一個(gè)命令執(zhí)行不正確了。
案例:
[root@localhost shelldata]# echo 123
123
[root@localhost shelldata]# echo $?
0
[root@localhost shelldata]# 123
-bash: 123: command not found
[root@localhost shelldata]# echo $?
127