bash-shell高级编程-变量的赋值
生活随笔
收集整理的這篇文章主要介紹了
bash-shell高级编程-变量的赋值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
變量的賦值
=
賦值操作(前后都不能有空白)
注意:因為=和-eq都可以用作條件測試操作,所以不要與這里的賦值操作相混淆。
=既可以用作條件測試操作,也可以用于賦值操作,這需要視具體上下文而定
簡單的變量賦值
#!/bin/bash # "裸體"變量 echo # 變量什么時候是"裸體"的, 比如前邊少了$的時候? # 當它被賦值的時候, 而不是被引用的時候. # 賦值 a=879 echo "The value of \"a\" is $a." # 使用'let'賦值 let a=16+5 echo "The value of \"a\" is now $a." echo # 在'for'循環中(事實上, 這是一種偽賦值): echo -n "Values of \"a\" in the loop are: " for a in 7 8 9 11 doecho -n "$a " done echo echo # 使用'read'命令進行賦值(這也是一種賦值的類型): echo -n "Enter \"a\" " read a echo "The value of \"a\" is now $a." echoexit 0簡單又不簡單的的兩種類型的變量賦值
#!/bin/bash a=23 # 簡單的賦值 echo $a b=$a echo $b # 現在讓我們來點小變化(命令替換). a=`echo Hello!` # 把'echo'命令的結果傳給變量'a' echo $a # 注意, 如果在一個#+的命令替換結構中包含一個(!)的話, #+ 那么在命令行下將無法工作. #+ 因為這觸發了Bash的"歷史機制." # 但是, 在腳本中使用的話, 歷史功能是被禁用的, 所以就能夠正常的運行. a=`ls -l` echo $a echo echo "$a" exit 0使用$(...)機制來進行變量賦值(這是一種比后置引用(反引號`)更新的一種方法). 事實上這兩種
方法都是命令替換的一種形式.
bash變量是不區分類型的
不像其他程序語言一樣,bash并不區分變量的類型,本質上bash變量都是字符串。實際的作用依賴于上下文,Bash也允許比較操作和整數操作,其中的關鍵因素就是,變量中的值是否只有數值。
#!/bin/bash # int-or-string.sh: 整型還是字符串?a=2334 #整型. let "a += 1" echo "a = $a " # a = 2335 echo # 還是整型. b=${a/23/BB} # 將"23"替換成"BB". # 這將把變量b從整型變為字符串. echo "b = $b" # b = BB35 declare -i b # 即使使用declare命令也不會對此有任何幫助. echo "b = $b" # b = BB35 let "b += 1" # BB35 + 1 = echo "b = $b" # b = 1 echo c=BB34 echo "c = $c" # c = BB34 d=${c/BB/23} # 將"BB"替換成"23". # 這使得變量$d變為一個整形. echo "d = $d" # d = 2334 let "d += 1" # 2334 + 1 = echo "d = $d" # d = 2335 echo# null變量會如何呢? e="" echo "e = $e" # e = let "e += 1" # 算術操作允許一個null變量? echo "e = $e" # e = 1 echo # null變量將被轉換成一個整型變量.# 如果沒有聲明變量會怎樣? echo "f = $f" # f = let "f += 1" # 算術操作能通過么? echo "f = $f" # f = 1 echo # 未聲明的變量將轉換成一個整型變量. # 所以說Bash中的變量都是不區分類型的. exit 0不區分變量的類型既是幸運的事情也是悲慘的事情. 它允許你在編寫腳本的時候更加的靈活(但是也足
夠把你搞暈!), 并且可以讓你能夠更容易的編寫代碼. 然而, 這也很容易產生錯誤, 并且讓你養成糟糕
的編程習慣.
這樣的話, 程序員就承擔了區分腳本中變量類型的責任. Bash是不會為你區分變量類型的
總結
以上是生活随笔為你收集整理的bash-shell高级编程-变量的赋值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【2016年第5期】面向图数据管理系统基
- 下一篇: 作者:洪学海(1967-),男,博士,中