linux 基礎(8)—— 變量

變量:命名的內存空間

1.作用數據存儲格式

                        參與的運算

                        表示的數據范圍

    類型:字符

                        數值:整型、浮點型

           變量命名法則:

           ①不能使程序中的保留字:例如if, for

           ②只能使用數字、字母及下劃線,且不能以數字開頭

           ③見名知義

2.bash 變量的種類

根據變量的生效范圍等標準:

1本地變量:生效范圍為當前shell 進程;對當前shell 之外的其它shell 進程,包括當前shell 的子shell 進程均無效

2環境變量:生效范圍為當前shell 進程及其子進程局部變量,父進程無效

linux 基礎(8)—— 變量


3位置變量:在腳本代碼中調用通過命令行傳遞給腳本的參數

$1, $2, … :對應第1 、第2 等參數,shift [n] 換位置

$0:  命令本身

$*:  傳遞給腳本的所有參數,

$@:  傳遞給腳本的所有參數,

$#:  傳遞給腳本的參數的個數

set —  清空所有位置變量

shift #  刪除前#個參數,其他參數往前移#

linux 基礎(8)—— 變量

$@  $*  只在被雙引號包起來的時候才會有差異

$*:  全部參數合為一個字符串

$@:  每個參數為獨立字符串

linux 基礎(8)—— 變量

4特殊變量$?, $$

$?  變量保存最近的命令退出狀態

echo $$:查詢當前進程號

                顯示所有進程  ps -ef | grep bash   tty找到當前的終端 ,查詢當前進程號

                查看進程樹(-p 顯示進程號)pstree -p | grep bash ,查詢當前進程號

linux 基礎(8)—— 變量

echo $PPID:查詢父進程進程號

echo $SHLVL:查詢是當前SHELL是幾級SHELL

linux 基礎(8)—— 變量

3.變量的賦值,查詢,執行,引,刪除

1變量賦值(本地變量和環境變量的區別)

本地變量:name=‘value’

環境變量:export varname=value

                 declare -x varname=value

2變量查詢(本地變量和環境變量的區別)

本地變量:set (即查本地,也查環境)

環境變量:env           printenv(搜索的結果一樣)

                      export      declare -x(搜索的結果一樣)

linux 基礎(8)—— 變量

3變量執行

若當前SHELL和子SHELL有相同的變量時:

./執行腳本時,在子SHELL下讀取變量xiaoming,回到當前SHELL,當前的變量xiaoming不受影響

source  .  執行腳本時,直接在當前SHELL下,讀取子SHELL下的變量xiaoming,當前SHELL的變量xiaoming被覆蓋(危險)

linux 基礎(8)—— 變量


4變量引用

轉譯:\ 完全轉譯    ‘ ‘ 完全轉譯

          “”部分轉譯     \ ` ! $ 4個不轉譯

$varname  普通引用(里邊沒特殊字符)

‘$varname’  或  在 $varname\  完全轉譯特殊字符

“$varname”  部分轉譯

linux 基礎(8)—— 變量

“$varname”  和  ${varname} 都能表示界限

特殊:當變量值當中包含換行符,如果希望引用出的值同樣包含換行符,只能使用“$varname”

linux 基礎(8)—— 變量

varname=$(COMMAND)  或  varname=`COMMAND`  調用命令結果

varname=”$var”  將變量賦予其他變量

linux 基礎(8)—— 變量

練習:編寫腳本/root/bin/systeminfo.sh, 顯示當前主機系統信息,包括主機名,IPv4 地址,操作系統版本,內核版本,CPU 型號,內存大小,硬盤大小。

linux 基礎(8)—— 變量

注意:賦值變量one,two…時是賦值命令的結果,所以需要用` ` $( )

              echo時,引用one,two…等變量時,加” ” 引用變量

(5)刪除變量

unset name


4.只讀變量 只能聲明, 但不能修改和刪除

 聲明只讀變量:readonly name

                         declare -r name

 查看只讀變量:readonly –p

linux 基礎(8)—— 變量


5.退出狀態

1)進程使用退出狀態來報告成功或失敗

? $?  變量保存最近的命令退出狀態

? 0 代表成功,1 255 代表失敗

linux 基礎(8)—— 變量

2)退出狀態碼

bash 自定義退出狀態碼

exit [n] :自定義退出狀態碼  多用于 if 語句

注意:腳本中一旦遇到exit 命令,腳本會立即終止;終止退出狀態取決于exit 命令后面的數字

注意:如果未給腳本指定退出狀態碼,整個腳本的退出狀態碼取決于腳本中執行的最后一條命令的狀態碼


6.變量的算術運算

①bash中的算術運算: let

+, -, *, /, %取模(取余), **(乘方)在bc當中乘方是^

實現算術運算:

① let var=算術表達式

② var=$[算術表達式]   echo $[ ]

③ var=$((算術表達式))

④ var=$(expr arg1 arg2 arg3 …)   乘法時要轉譯* ,即\*

 declare –i var = 數值

⑥ echo ‘算術表達式’ | bc    bc當中乘方是^

linux 基礎(8)—— 變量

增強型賦值:

let var+=#  自加#后賦值         let var++  自增1

let var-=#   自加#后賦值         let var–   自減1

linux 基礎(8)—— 變量

原創文章,作者:along,如若轉載,請注明出處:http://www.www58058.com/83720

(0)
alongalong
上一篇 2017-08-04 22:25
下一篇 2017-08-05 11:02

相關推薦

  • vim的簡介與使用

          vi命令是UNIX操作系統和類UNIX操作系統中最通用的全屏幕純文本編輯器。Linux中的vi編輯器叫vim,它是vi的增強版(vi Improved),與vi編輯器完全兼容,而且實現了很多增強功能。      vi編輯器支持編輯模式和命令模式,編輯模式下可…

    Linux干貨 2016-08-15
  • 第十周作業

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)     CentOS系統啟動流程:     1.加電自檢:由bios去檢測各硬件是否存在且是否正常運行,然后進行硬件初始化     2.選擇啟動順序,加載mbr:根據bios設置的設備啟動順序,…

    2017-07-03
  • Linux 文本處理,文本工具,查看,分析,統計文本文件,grep,正則表達式

    文本處理 各種文本工具,查看,分析,統計文本文件 grep 正則表達式 擴展正則表達式 sed cat -n f1 加行號(空格行都計算) cat -b f1 加行號(只計算有字符的行) cat -ns f1 加行號(壓縮空行) cat -v f1 能看windows文件的M`符號 cat -T f1 能夠顯示里面的tab空位,顯示為^I cat -A f1…

    Linux干貨 2016-08-07
  • 7月19號:計算機基礎+在VMware12中安裝CentOS6.8

        16號從正下暴雨的武漢來到帝都參加馬哥培訓班,從清河公寓亮哥開始,到宿舍另外五位室友,漸漸認識更多人,還算適應額不錯。但走在北京的馬路上,多少還是有些陌生,不過就如宿舍一樣,來的時候臟兮兮,經過一番打掃后,干凈了不少,我也會很快習慣在這邊的生活,精力全放在linux上!   &nb…

    Linux干貨 2016-08-05
  • Centos7基于虛擬主機的Lamp配置bbs、Blog、PhpMyAdmin應用程序

    Centos7實現基于虛擬主機的各應用程序搭建: 一、配置三個基于名稱的虛擬主機;      (a) discuzX      (b) wordpress      (c) https: phpMyAdmin 1.安裝Lamp環境及安裝mo…

    Linux干貨 2016-10-09
  • nginx AIO機制與sendfile機制

    nginx AIO機制與sendfile機制 從0.8.11版本開始, nginx 開始支持Linux native aio,如何在nginx里配置使用這套機制是本文介紹的重點。在下面的示例配置中,幾個重要相關選項的具體含義如下: aio: Syntax: aio on | off | sendfi…

    Linux干貨 2016-10-27
欧美性久久久久