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條件語句中