set $(commond) 將位置引數設定為後面的命令輸出
shell命令中 在-- 後面的語句將會不再解釋後面的 -
cal 萬年曆
bc 計算器
$histsize 歷史大小
$random 隨機數
basename pathname 去除路徑字首的最後部分
空變數+1=1
沒有賦值或申明的變數+1=1
字元變數--->通過替換成為數字-->數字變數 可以接受 +1操作
數字變數--->通過替換成為字元--->字元變數 不再接受 +1操作
使用-e 選項的echo 命令來列印轉義符
如果使用$'/x'結構,那-e 選項就不必要了
版本2 以後bash 允許使用$'/nnn'結構,'/nnn/是8 進製
"[["是乙個關鍵字,並不是乙個命令
bash 把[[ $a -lt $b ]]看作乙個單獨的元素,並且返回乙個退出碼.
陣列申明方式:空格分隔的,()包含的字元
var=(ab sc linfe)
陣列引用方式
first=$var[1] 引用第二個元素
first=$var[0] 或者 first=$var 引用第乙個元素
獲取整個陣列
whole=$var[@]
echo $whole
獲取陣列的最大長度
long=$
echo $long
陣列第n個元素字串的長度
long=$ 陣列第3個元素的長度
獲取一部分陣列內容
part=$
echo $part 獲取從第2個元素開始 3個元素的內容
part=$ 獲取從開始到第3個元素的內容
echo $part
part=$ 獲取從第3個元素開始的內容
echo $part
陣列的應用:模擬棧
push:
array=(」$」 $new_element)
pop:
array=($-1))})
shift:
array=($)
unshift
array=($new_element 「$」)
function del_array ; i++ ))
doif [ "$1" = "$" ] ;then
break
fidone
del_array_index $i
}function del_array_index $)
}$ 數制轉換 echo $((2#101011)) 返回101011的十進位制結果
:內建命令,返回值為0,命令的結果返回為0表示true,什麼也不做
$ 判斷hostname是否被set
() 命令組,在()中的命令列表,將作為乙個子shell來執行
$? 前乙個命令的退出狀態
$$ 程序的pid
$*,$@ 位置引數
$引數替換
$ 正規表示式中的行結束符
? 正規表示式中的單個字元
? (())結構中,用來做3元操作符
* 正規表示式中的萬能匹配
** 數學冪運算
{} 大括號擴充套件 cat > file cp file
^ 匹配輸入字串的開始位置。
$ 匹配輸入字串的結束位置。
~+ 等同於 $pwd 當前目錄
~- 等同於 $oldpwd 上乙個目錄
args=$#;lastarg=$ 引數傳遞中第乙個為$1,$#表示總個數,最後乙個為 $lastarg
[ -n $var] var是否被定義,定義則為真 與 [ -z $var ]測試相反
命令 sed -i 's/pattern/replacement-string/ file
命令if [[ "a" != "a"$i ]]
then
echo "not space"
else
echo "space"
fi$:拿掉第乙個 / 及其左邊的字串:dir1/dir2/dir3/my.file.txt
$:拿掉最後乙個 / 及其左邊的字串:my.file.txt
$:拿掉第乙個 . 及其左邊的字串:file.txt
$:拿掉最後乙個 . 及其左邊的字串:txt
$:拿掉最後乙個 / 及其右邊的字串:/dir1/dir2/dir3
$:拿掉第乙個 / 及其右邊的字串:(空值)
$:拿掉最後乙個 . 及其右邊的字串:/dir1/dir2/dir3/my.file
$:拿掉第乙個 . 及其右邊的字串:/dir1/dir2/dir3/my
記憶的方法為:
$:提取最左邊的 5 個位元組:/dir1
$:提取第 5 個字元右邊的連續 5 個位元組:/dir2
我們也可以對變數值裡的字串作替換:
$:將第乙個 dir 替換為 path:/path1/dir2/dir3/my.file.txt
$:將全部 dir 替換為path:/path1/path2/path3/my.file.txt
利用 $ 還可針對不同的變數狀態賦值(沒設定、空值、非空值):
$ :假如 $file 沒有設定,則使用 my.file.txt 作傳回值。(空值及非空值時不作處理)
$ :假如 $file 沒有設定或為空值,則使用 my.file.txt 作傳回值。 (非空值時不作處理)
$ :假如 $file 設為空值或非空值,均使用 my.file.txt 作傳回值。(沒設定時不作處理)
$ :若 $file 為非空值,則使用 my.file.txt 作傳回值。 (沒設定及空值時不作處理)
$ :若 $file 沒設定,則使用 my.file.txt 作傳回值,同時將$file 賦值為 my.file.txt 。 (空值及非空值時不作處理)
$ :若 $file 沒設定或為空值,則使用 my.file.txt 作傳回值,同時將 $file 賦值為 my.file.txt 。 (非空值時不作處理)
$ :若 $file 沒設定,則將 my.file.txt 輸出至 stderr。 (空值及非空值時不作處理)
$ :若 $file 沒設定或為空值,則將my.file.txt 輸出至 stderr。 (非空值時不作處理)
tips:
以上的理解在於, 你一定要分清楚 unset 與 null 及 non-null 這3種賦值狀態.
一般而言, : 與 null 有關, 若不帶 : 的話, null 不受影響, 若帶 : 則連null 也受影響.
還有哦,$ 可計算出變數值的長度:
$ 可得到 27 ,因為/dir1/dir2/dir3/my.file.txt 剛好是 27 個位元組...
這牽扯到 script 或 function 的 positional parameter 。
$0 代表 script 本身(function 的 $0 也是 script)
其後的字串以 ifs 分隔,分別從 $1, $2 ... 起...
$@ 或 $* 則是 $1 到最後乙個 positional parameter 。
shift 是"引數向左移動",但不好理解...
我將之說成:shift 就是"砍掉" $@/$* 最左邊的 parameter 。
shift n 則是砍掉 n 個...
比方說,要取得第 10 個 parameter ,可以:
echo $
也可以:
shift 9; echo $1
linux 學習筆記四 bash shell
type 查詢命令是否為bash 內建命名 變數的設定規則 myname ceshi 變數與變數內容用 連線 變數名稱可以是數字英文本母,但是不能以數字開頭。內容如果有空白可以用單引號 或者雙引號 但是單引號只能作為一般字元也就是文字顯示,雙引號可以引用變數。變數的增加 名稱 增加內容,或者 內容 ...
Bash Shell學習筆記一
1.在linux中執行指令碼檔案時 以 執行的 或者普通方式 輸入檔名 執行時是啟動子shell執行的,所以,一切環境變數設定在推出後失效 因此在指令碼中設定 path將失效,如果一定要以指令碼方式來設定,需要 空格 檔名或者 source 指令碼檔案的形式執行.2.linux中的 和 雙引號和單引...
Bash shell 學習筆記 PS命令
ps命令能夠給出當前系統中程序的快照。它能捕獲系統在某一事件的程序狀態。如果你想不斷更新檢視的這個狀態,可以使用top命令。通過cpu和記憶體使用來過濾程序 根據 cpu 使用來公升序排序 ps aux sort pcpu less 根據 記憶體 使用來公升序排序 ps aux sort pmem ...