shell基礎 shell特殊變數

2022-03-18 09:03:07 字數 1416 閱讀 7540

一.變數列表

二.實驗

系統: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 是乙個數字,表示第幾個引數。例如,第乙...