bash-3.2$ echo$array0# 印第一個元素 one bash-3.2$ echo${array0[0]}# 印第一個元素 one bash-3.2$ echo${array0[@]}# 印全部元素 one two three four five six bash-3.2$ echo${#array0[@]}# 印元素個數 6 bash-3.2$ echo${#array0[2]}# 印第3個元素長度 5 bash-3.2$ echo${array0[@]:3:2}# 從第四個開始印2個元素 four five bash-3.2$ for i in"${array0[@]}"; do# 迴圈 echo"$i" done one two three four five six
大括號擴展
1 2 3 4
$ echo {1..10} # 印 1 - 10 1 2 3 4 5 6 7 8 9 10 $ echo {a..z} a b c d e f g h i j k l m n o p q r s t u v w x y z
預設變數取得執行結果字串
1 2
$ echo"I'm in $(pwd)" $ echo"I'm in $PWD"
$PWD 存放的目前目錄位置的路徑。
$(pwd) pwd是取得目前路徑的指令,在字串中使用,也會取得目前路徑。
清除 output
1
$ clear
當目前的輸出很雜亂,可以清乾淨,也可以搭配 Ctrl+L 快鍵來達到同樣目的。
變數判斷,分支
1 2 3 4 5 6 7
$ Name=owen $ if [ $Name != $User ] then echo"username 不一樣" else echo"名字一樣" fi
上面的語法沒有錯,不過實務上我們不會用下面的寫法 if [ "$Name" != $USER ] ... 有兩點要注意:
$ if [ "$Name" == "Steve" ] && [ "$Age" -eq 15 ]; then echo "Name is Steve and Age is 15" fi $ if [ "$Name" == "Daniya" ] || [ "$Name" == "Zach" ]; then echo "Name is Steve or Zach" fi
字元匹配
1 2 3 4
$ Email=me@example.com $ if [[ "$Email" =~ [a-z]+@[a=z]{2,}\.(com|net|org) ]]; then echo"Valid email!" fi
注意這兒用到的是兩個方括號,和一般的單方括號是很不一樣的,使用 =~ 時要特別注意。
指令別名
1
$ alias ping='ping -c 4'
可以覆蓋原來的指令,就好像有預設參數一樣。
數字運算
1
$ echo $(( 10 + 5 ))
可以進行 + - * /
注意這兒使用的是雙括號
** 是指數算
ls 指令
ls -l 每一行一個結果輸出
ls -t 以最後更改時間排序輸出
ls -R 遞迴執行,包含子目錄
cat
1
$ cat file.txt
輸出檔案內容到 stdout
我們可以將檔案內容指定到變數
1 2
$ Contents=$(cat file.txt) $ echo -e "START OF FILE\n$Conents\nEND OF FILE"