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
下一篇 2017-08-05

相關推薦

  • 馬哥教育網絡班25期-第3周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who root     tty1         2016-12-…

    Linux干貨 2016-12-19
  • 關于shell腳本基礎編程第四篇

                                    shell腳本基礎編程第四篇本章主要內容:函數 函數 function:     &n…

    系統運維 2016-08-24
  • RAID概述

    1、引言 RAID全稱Redundant Arrays of Inexpensive Disks / Redundant Arrays of Independent Disks,即獨立冗余磁盤陣列。RAID可以通過相關技術(軟件/硬件),將多個較小的磁盤整合成為一個較大的磁盤整體,而且能從某些方面提高數據的讀寫及數據保護。RAID分為不同…

    Linux干貨 2016-12-24
  • 腳本編程之循環:for,while,until

    shell中的循環語句一般有: for   while   until 一、for     for 變量名 in 列表;do         循環體     d…

    Linux干貨 2016-08-18
  • 馬哥教育網絡20期+第8周練習博客

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋:鏈接層設備,基于MAC地址過濾。 集線器:物理層設備,基本都屬于半雙工模式。集線器與網橋在現在的局域網中基本都不用了。 二層交換機:基本MAC轉發數據,功能齊全的可支持VLAN等功能。常見的有100/1000M、16口/24口/48口。 三層交換機:功能齊全的交換機,具備都…

    Linux干貨 2016-08-01
  • shell腳本編程基礎

    一.編程基礎             ? 程序:指令+數據             ? 程序編程風格:  &n…

    Linux干貨 2016-08-12
欧美性久久久久