Advanced Bash-Shell Guide(Version 10) 學習筆記二

變量替換
$variable 是 ${variable}的簡寫
    39 hello="A B C D"
    40 echo $hello # A B C D
    41 echo "$hello" # A B C D
    引號保留變量裏面的空白
    
    1 echo "$uninitialized" # (blank line)
    2 let "uninitialized += 5" # Add 5 to it.
    3 echo "$uninitialized"
    未初始化的變量是null,可是在算數表達式中等於0
命令替換
    17 a=`ls -l`   # Assigns result of 'ls -l' command to 'a'
    18 echo $a
    或
    a=$(ls -l)
    echo $a
    
    字符串+整數等於整數,字符串至關於0
    可是在除以一個null變量的時候,系統報錯。
    
變量類型
    本地變量
        在代碼塊可見
    環境變量
        影響shell和用戶接口的變量
位置參數
    取最後的參數
        1 args=$# # Number of args passed.
        2 lastarg=${!args}
        或
        lastarg=${!#}
[...]和``.``.``.``
使用``.``.``.``比起[]能夠阻止在腳本中常見的邏輯錯誤
例如:&&, ||, <, and > 操做

在進行算數運算的時候,``.``.``.``會將八進制和十六進制進行自動計算而[]
則不能夠
    5 decimal=15
    6 octal=017 # = 15 (decimal)
    7 hex=0x0f # = 15 (decimal)
    8
    9 if [ "$decimal" -eq "$octal" ]
    10 then
    11 echo "$decimal equals $octal"
    12 else
    13 echo "$decimal is not equal to $octal"    # 15 is not equal to 017
    14 fi    # Doesn't evaluate within [ single brackets ]!
    
    
    17 if [[ "$decimal" -eq "$octal" ]]
    18 then
    19 echo "$decimal equals $octal"    # 15 equals 017
    20 else
    21 echo "$decimal is not equal to $octal"
    22 fi # Evaluates within ` double brackets `!
    
((...))算數測試
    若是表達式計算是0,則它的退出狀態碼是1或false
    若是表達式計算是非0,則它的退出狀態碼是0或true
    它的退出狀態和[...]相反
        
        
    echo ${aa##*/}    獲取變量aa的文件名稱 以/位分隔符
    ${filename##*.} != "gz"
    filename##*.    獲取filename的擴展名    
        
        
    Infinite Monkeys    
    AppMakr    
字符串操做

獲取字符串長度
    ${#string}
    expr length $string
    expr "$string" : '.*'

獲取從字符串開頭匹配的字符串的長度
    expr match "$string" '$substring'
    expr "$string" : '$substring'    
        $substring is a regular expression

獲取子串在字符串中開始的位置
    expr index $string $substring

取出子串
    ${string:position}
    ${string:position:length}   

shell

相關文章
相關標籤/搜索