linuxShellStudyNote

1 Shell 中的變量

  • 使用declare聲明變量

    declare var_name=var_value

    # declare -i var_name 將定義的變量定義為整數(shù)型變量

    # declare -r var_name 聲明的變量為只讀 變量

    # declare -p var_name 顯示指定變量的屬性和值

    # declare -x var_name 將指定的變量通過環(huán)境輸出到后續(xù)命令

  • 清除變量

    unset var_name # unset function_name 清除變量或函數(shù)

2 變量的引用

`` # 反引號,shell會(huì)將反引號中的內(nèi)容視作命令,并用指向結(jié)果代替反引號以及反引號中的內(nèi)容

'' #單引號,全引用,單引號中的所以內(nèi)容都不會(huì)被解釋成其他意思,只保留顯示的意義

""# 雙引號,半引用,雙引號中的內(nèi)容處理 `` '' "" $ \ 之外,均保留顯示的意義

取變量的值

  • 使用 $var_name # 獲取變量的值,可能會(huì)出錯(cuò)
  • 使用 ${var_name} # 推薦使用這種方式獲取變量的值

3 算術(shù)表達(dá)式

  • 使用let

    let var=" var + 1"

    let var=${var}+3

    # 使用let時(shí)如果要在運(yùn)算符左右使用空格,那么必須加上雙引號

    # 使用let 使用可以使用$,也可以不實(shí)用$

  • 使用 expr

    var=`expr $var1 \* $ var2`

    # **實(shí)用expr時(shí)運(yùn)算符左右必須實(shí)用空格,變量必須使用$ **

  • 使用 $(())

    var=$(( var1 +${var2} ))

    # 可以使用$,也可以不使用$,運(yùn)算符左右可以使用空格也可以不適用空格

  • 使用$[]

    var=$[ ${var1}+ var2 ]

    # 可以使用$,也可以不使用$,運(yùn)算符左右可以使用空格也可以不適用空格

  • 使用 bc

    # 前面的集中方法只能用于處理整數(shù)而不能用于處理浮點(diǎn)數(shù)運(yùn)算

    # bc 提供任意精度的計(jì)算

    • 1 直接使用外部程序 bc

    • 2 使用管道

      res=` echo "${var1}/10 + 2*(3-5*4)" | bc -l `

4輸入輸出

  • read 輸入

    read -r var1 var2

  • printf 格式化輸出

    printf "%.3f\n" ${var}

5命令替換

  • `shell_command`
  • $(shell_command)

6測試

  • 字符串測試

    # 字符串測試

  • 整數(shù)測試

    # 整數(shù)測試

  • 文件測試

    # 文件測試

7函數(shù)

1定義

func_name(){
  statment1
  statment2
}
# or
function func_name(){
  statment1
  statment2
}

2調(diào)用

func_name arg1 arg2 arg3

3函數(shù)鏈接/函數(shù)調(diào)用函數(shù)

helloWord(){
  echo "Hello World"
}
function alice(){
  echo "in allice"
  helloWord()
  echo "end"
}
#調(diào)用函數(shù)
allice()

4函數(shù)返回值

Shell 中的函數(shù)的返回值必須是0-255之間的整數(shù),即函數(shù)只能返回狀態(tài)碼

函數(shù)的返回值可以通過$?來獲取

5獲取函數(shù)參數(shù)

# $# 獲取參數(shù)的個(gè)數(shù)
# $n 獲取第n個(gè)參數(shù),其中n為正整數(shù)
# $@ $* 獲取所有參數(shù)
# 移動(dòng)位置參數(shù)
# shift

function func(){
  while (( $# > 0 ))
  do
      echo "${1}"
      echo $#
      #shift改變$#的值
      shift
  done
}
#間接參數(shù)傳遞
var1=var2
var3=var1
echo ${!var3}
#output var2
# 傳遞數(shù)組
# shell 不支持傳遞數(shù)組,但是可以通過其他方式傳遞數(shù)組的值
func_name "${arr[@]}"
# 雙引號必須加,否則會(huì)出錯(cuò)
# 調(diào)用其他文件的函數(shù)
#! /bin/bash
#載入函數(shù)庫
. file_name.sh
# dot 后面必須有**空格**

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容