Bash 命令的解析

base腳本文件的第一行

#! /bin/bash

解析

1. brace expansion 花括號擴展

echo {1..10}
mkdir data{1,2,3,4}
mkdir data-{a..d}

使用上面方法可以快速創建 data-a 到 data-d 的文件,".." 可以展開

 

2. tilde expansion 波浪線擴展

"~" 可擴展成用戶的 $HOME 值

cd ~

 

3. parameter, variable 變量擴展

將帶"$"的變量名擴展成變量值

var="xyz"
echo $var

 

4. artithmetic expansion 算術擴展

 整數算術運算

$(( i++ ))
sum=$(( i++ ))

 

5. command substitution 命令替換

將命令的輸出賦值給一個變量

today=$(date +%F)
line=$(grep xxx yyy)

 

 

6. word splitting 詞的拆分

變量值按空白符拆分,如

var=" a b c"
for v in var; do
    echo $v
done

 

 

7. pathname expansion 路徑名擴展

通配符擴展成文件名

"*" 表示任意長度的字符串

"?" 表示任意一個字符

"[]" [1-9] 也可以實現快速擴展,但是隻能用於文件名擴展,跟上面的花括號有所區別

 

注意

1. 腳本中的解析是按照上面1到7的順序進行的

2. 不要隨便寫空格,因爲空格會導致無法正確解析,例如:"="號兩邊不允許有空格

3. 所有 "/" 結尾的都代表是一個文件夾

4. 注意腳本的權限位和文件掩碼,如果在腳本中動態生成一個文件,需要注意是否有權限執行

5. 避免使用 pwd 獲取當前腳本的執行目錄,因爲 pwd 代表的是當前的工作目錄,並不是腳本的。可以使用以下方法,不管在哪裏執行腳本,都能正確獲取腳本的路徑信息

get_workdir()
{
    local dir=$(dirname $0)
    pwd=$( cd "$dir" && pwd) 
    echo $pwd
    pwd     
}

workdir=$(get_workdir)
echo "workdir: $workdir"

 

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