linux中shell變量$#,$@,$0,$1,$2的含義解釋/Shell中的${}、##和%%使用範例

linux中shell變量$#,$@,$0,$1,$2的含義解釋: 
變量說明: 
$$ 
Shell本身的PID(ProcessID) 
$! 
Shell最後運行的後臺Process的PID 
$? 
最後運行的命令的結束代碼(返回值) 
$- 
使用Set命令設定的Flag一覽 
$* 
所有參數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。 
$@ 
所有參數列表。如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。 
$# 
添加到Shell的參數個數 
$0 
Shell本身的文件名 
$1~$n 

添加到Shell的各參數值。$1是第1參數、$2是第2參數…。 

-----------------------------------------------------------------

 

介紹下Shell中的${}、##和%%使用範例,本文給出了不同情況下得到的結果。
假設定義了一個變量爲:
代碼如下:
file=/dir1/dir2/dir3/my.file.txt
可以用${ }分別替換得到不同的值:
${file#*/}:刪掉第一個 / 及其左邊的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:刪掉最後一個 /  及其左邊的字符串:my.file.txt
${file#*.}:刪掉第一個 .  及其左邊的字符串:file.txt
${file##*.}:刪掉最後一個 .  及其左邊的字符串:txt
${file%/*}:刪掉最後一個  /  及其右邊的字符串:/dir1/dir2/dir3
${file%%/*}:刪掉第一個 /  及其右邊的字符串:(空值)
${file%.*}:刪掉最後一個  .  及其右邊的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:刪掉第一個  .   及其右邊的字符串:/dir1/dir2/dir3/my
記憶的方法爲:
# 是 去掉左邊(鍵盤上#在 $ 的左邊)
%是去掉右邊(鍵盤上% 在$ 的右邊)
單一符號是最小匹配;兩個符號是最大匹配
${file:0:5}:提取最左邊的 5 個字節:/dir1
${file:5:5}:提取第 5 個字節右邊的連續5個字節:/dir2
也可以對變量值裏的字符串作替換:
${file/dir/path}:將第一個dir 替換爲path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:將全部dir 替換爲 path:/path1/path2/path3/my.file.txt

//------------------------------------------------------------------------------------------------------

 

1、執行腳本時是在一個子shell環境運行的,腳本執行完後該子shell自動退出;

2、一個shell中的系統環境變量怎樣纔會被複制到子shell中(用export定義的變量);

3、一個shell中的系統環境變量只對該shell或者它的子shell有效,該shell結束時變量消失(並不能返回到父shell中)。

4、不用export定義的變量只對該shell有效,對子shell是無效的。

 

---------------------------------------

-d :判斷制定的是否爲目錄
-z:判斷制定的變量是否存在值
-f:判斷制定的是否爲文件
-L:判斷制定的是否爲符號鏈接
-r:判斷制定的是否可讀
-s:判斷存在的對象長度是否爲0
-w:判斷制定的是否可寫
-x:判斷存在的對象是否可以執行
!:測試條件的否定符號
這些文件操作很多時候給腳本編程帶來方便,尤其是用在if條件語句中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章