一.變數列表
二.實驗
系統:centos 7
1.特殊變數
[root@~_~ day2]# cat p.sh
#!/bin/bash
echo '$0:'$0
echo '$*:'$*
echo '$@:'$@
echo '$#:'$#
echo '$1$2$3:' $1$2$3
[root@~_~ day2]# sh p.sh a b c d
$0:p.sh
$*:a b c d
$@:a b c d
$#:4
$1$2$3: abc
2.$$
[root@~~ day2]# echo $$
1974
3.shift命令: 移位位置引數,重新命名位置引數 $n+1、$n+2 ... 到 $1、$2 ... 如果沒有給定 n,則假設為1。每次移動之後$#會少n
退出狀態:
返回成功,如n 為負或者大於 $#則失敗
(1).例子一,移動位置變數
[root@~_~ day3]# cat r.sh
#!/bin/bash
until [ $# -eq 0 ]
doecho "the first value is:$1 the number of values is:$#"
shift
done
[root@~_~ day3]# sh r.sh 1 2 3 4 5
the first value is:1 the number of values is:5
the first value is:2 the number of values is:4
the first value is:3 the number of values is:3
the first value is:4 the number of values is:2
the first value is:5 the number of values is:1
(2).例子二,利用shift移位進行累加
[root@~_~ day3]# cat s.sh
#!/bin/bash
sum=0
until [ $# -eq 0 ]
dosum=`expr $sum + $1`
shift
done
echo "sum is:$sum"
[root@~_~ day3]# sh s.sh 1 2 3 4 5
sum is:15
注意:以上的位移量都是1,位移量大於1時,輸入引數個數的不同,可能會有邏輯錯誤。
shell特殊變數基礎知識
0 獲取當前指令碼的檔名,如果指令碼中包含路徑,就包括路徑 n 獲取shell指令碼中第n個引數,n大於9時需要用 括起來 獲取當前shell指令碼後面的引數總個數 獲取當前指令碼所有所傳引數,不加引號和 相同,把所有引數視為乙個字符集,如果 加上雙引號,則表示,每個引數為單個字元,相當於 1,2,...
shell 特殊變數
變數解釋 展開為 1c 2c 3c 4c 5c.其中字母c為變數 ifs 的第乙個字母,ifs預設為空.展開為 1 2 3 4 5 引數個數 上乙個命令的返回值 當前指令碼的程序id pid 上乙個後台執行程序的程序號.上乙個命令的最後乙個引數.下面的aaa bbb 為變數名 如果 aaa為空或未定...
Shell特殊變數
變數名只能包含數字 字母和下劃線,因為某些包含其他字元的變數有特殊含義,這樣的變數被稱為特殊變數。例如,表示當前shell程序的id,即pid,看下面的 echo 執行結果29949 特殊變數列表 變數含義 0 當前指令碼的檔名 n傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如,第乙...