Linux Bash Shell有關變量

bash 創建一個子bash
-n 查看是否有錯誤
-x 逐行顯示信息
$:顯示當前PID
PPID :顯示父進程PID
SHLVL :顯示當前shell是幾級shell
pstree 顯示進程樹
-p 同時顯示進程號
ps -ef 顯示進程信息

本地變量 :僅對當前SHELL有效,對子SHELL也無效
環境變量:對當前SHELL及子SHELL均有效。

set 顯示本地變量和環境變量
env 顯示環境變量

變量賦值
變量名=變量值(可以是$(命令) 、$[$變量+n])
export 變量名 定義環境變量
export 變量名=變量值 定義環境變量
declare -x 變量名=變量值 定義環境變量

本地變量查詢 set 同時查本地和環境
環境變量查詢
env
printenv
export
declare -x
均為查詢環境變量,管道,接grep 變量名查詢單個變量

刪除變量
unset 變量名

變量只讀
readonly 變量名
declare -r 變量名

查詢所有只讀變量
readonly -p

位置變量:在腳本中通過調用命令行傳遞給腳本的參數
$1,$2,$3, 等等 分別對應第一個第二個第三個參數 參數以空格為間隔
$* 代表傳入腳本的所有參數。
$0 代表命令本身。
$@傳遞給腳本的參數,每個參數為獨立字符串
$# 傳遞給腳本的參數的個數
set — 清空所有位置變量

變量引用
$變量名
“$變量名”
$(變量名)
當變量值當中包含換行符,如果希望引用出的值同樣包含換行符,只能使用”$變量名”

+, -, *, /, %取模(取余), **(乘方)在bc當中乘方是^
實現算術運算:
(1) let var=算術表達式
(2) var=$[算術表達式]
(3) var=$((算術表達式))
(4) var=$(expr arg1 arg2 arg3 …) 乘法時要轉譯* ,即\*
(5) declare –i var = 數值
(6) echo ‘算術表達式’ | bc

算數運算 help let

+, -, *, /, %取模(取余), **(乘方)在bc當中乘方是^
實現算術運算:
(1) let var=算術表達式
(2) var=$[算術表達式]
(3) var=$((算術表達式))
(4) var=$(expr arg1 arg2 arg3 …) 乘法時要轉譯* ,即\* 且沒有乘方。
(5) declare –i var = 數值
(6) echo ‘算術表達式’ | bc

read 指定腳本變量
read -p 提示語句
read -s 靜默輸入

數組:儲存多個元素的連續的內存空間,相當于多個變量的集合。
數組索引 : 編號從0開始,屬于數值索引
索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引,bash4.0版本之后開始支持
bash的數組支持索引號不連續,如陣列 00 01 02 10 11 12 20 21 22等等
數組聲明
declare -a 數組名 (可以不定義直接使用)
關聯數組 declare -A 數組名
數組查詢 declare -a 可以查詢系統中定義了那些數組
-A 可以查詢系統中定義了那些關聯數組

賦值
單個單元賦值 數組名【編號】=變量
如: int[0]=4 ; i=0; int[$i]=4 ; int[0]=$(命令)
一次賦值全部元素
如: int=({1..100})
int=(“a1” “a2” “a3″ …)
賦值特定元素
如:int=([0]=”a1″ [3]=”a2”)
交互式數組賦值
read -a 數組名
追加元素定義
數組名【${#數組名[*]}】=變量值

引用 ${數組名[下標號]} :引用單個元素 不寫下標為數組第一個元素
${數組名[*或者@]} :引用全部元素,以空格為間隔。
${#數組名[*或者@]}:引用數組的個數為變量。

刪除數組
unsettle 數組名【數組下標】 刪除單個元素
unset 數組名 刪除整個數組

切片應用;
數組的切片應用
${數組名:offset:number}
offset:要跳過的元素個數 (不寫從頭取n個) ${數組名::number}
number :要取出的元素個數 (不寫取出之后所有。)${數組名:offset}
變量的切片應用
變量長度 如:${#a}
${a:offset:number}
offset 跳過前n個字符
number 取n個字符
${a:offset: -length}
offset 跳過左側的n個字符
length 去掉最右邊n個字符
${a: -length}
length 從右邊取n個字符
${a: -levgth:-offset}
先從最右側向左取到length個字符再從這個字符開始向右取到距離最右側offset個字符之間的內容。
注意:-length前有一個空格?。?!

基于模式取子串
${變量#*字符串}
當在變量中匹配到第一個字符串之后,刪除第一個字符串與字符串之前的內容。
${變量##*字符串}
刪除自左向右最后一個字符串之前的內容。
${變量%*字符串}
與#相反為從右向左刪除到右邊第一次出現的最后一個字符。
${變量%%*字符串}
與##相反,刪除自右向左最后一個字符串之前的內容。(均刪除字符串)
${變量/pattern/substr} 匹配到的第一個字符串替換成substr字符串
pattern 為變量中有的匹配的字符串
substr 替換的字符串
${變量//pattern/substr} 匹配到的所有字符串全部替換成substr字符串
${變量/#pattern/substr} 行首如果匹配就替換
${變量/%pattern/substr} 行尾如果匹配就替換
替換成空就是刪除。
${變量^^} :把變量中的所有小寫轉換成大寫
${變量,, } 把變量中的所有大寫轉換成小寫

Image

高級變量用法 有類型變量

declare 選項 變量名
-r 聲明或顯示只讀變量
-i 將變量定義為整數型
-a 將變量定義為數組
-A 將變量定義為關聯數組
-f 顯示已定義的所有函數名及內容
-F 僅顯示已定義的所有函數名
-x 聲明或顯示環境變量和函數
-l 聲明變量為小寫
-u 聲明變量為大寫

eval 該命令將會首先掃描命令行進行所有的置換,然后再執行該命令。該命令適用于那些一次掃描無法實現其功能的變量。該命令對變量進行兩次掃描。

mktemp 創建臨時文件。
mktemp /tmp/file.xxxx
最少三個x
-d 創建臨時目錄
-p 指定路徑
mktemp -p 路徑 file.xxx
install 結合了cp chmod chusr 三個命令的功能。
實現了 把文件拷貝過去,然后改所屬人、所屬組,然后改權限。
-m 權限 如:755
-o 屬主
-g 屬組
install 選項。。。 【-T】 源文件 目的文件名 單文件
install 選項。。。 源文件。。。 目的目錄
install 選項。。。 -t 目的目錄 源文件。。。
install 選項。。。 -d 目的目錄。。。 創建空目錄。

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/87256

(0)
何必呢何必呢
上一篇 2017-09-16 13:13
下一篇 2017-09-16 15:42

相關推薦

  • (總結)MySQL自帶的性能壓力測試工具mysqlslap詳解

    PS:今天一同事問我有木有比較靠譜的mysql壓力測試工具可用。其實mysql自帶就有一個叫mysqlslap的壓力測試工具,還是模擬的不錯的。下面舉例說說。mysqlslap是從5.1.4版開始的一個MySQL官方提供的壓力測試工具。通過模擬多個并發客戶端訪問MySQL來執行壓力測試,同時詳細的提供了“高負荷攻擊MySQL”的數據性能報告。并且能很好的對比…

    Linux干貨 2015-02-10
  • 馬哥教育網絡第21期-第十周課程練習

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 1.post加電自檢,bios檢測基礎硬件設備 2.boot sequence:按次序查找各引導設備,第一個有引導程序的設備即為本次啟動用到設備;讀取啟動設備MBR中 的bootloader,啟動GRUB,選擇內核加載到內存中。 3.kernel:自身初始化:探測可識別到的…

    Linux干貨 2016-11-14
  • 習題

    1、刪除/etc/grub2.conf文件中所有以空白開頭的行行首的空白字符 2、刪除/etc/fstab文件中所有以#開頭,后面至少跟一個空白字符的行的行首的#和空白字符 3、在/root/install.log每一行行首增加#號 4、在/etc/fstab文件中不以#開頭的行的行首增加#號 5、處理/etc/fstab路徑,使用sed命令取出其目錄名和基…

    Linux干貨 2016-08-10
  • N22-草稿

    testing

    Linux干貨 2016-08-08
  • N25第三周作業

    .列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登陸多次,則只顯示一次即可。 此題主要考察命令who,cut,sort以及管道的基本用法:who:列出當前已登陸的用戶名,登陸設備名,時間以及ip地址。 cut:    顧名思義就是截取之意, -d 指定要截取信息的分隔符,此處是以空格為分隔符,-f指定要截取的字段,此…

    Linux干貨 2016-12-20
  • 文本處理工具

    文本處理工具 文件內容:less和 cat,more文件截?。篽ead和tail文本內容處理:tr按列抽?。篶ut按關鍵字抽?。篻rep 文件查看命令:cat, tac,rev cat  復制標準輸入到當前輸出 語法:cat [OPTION]… [FILE]…選項: -E: 顯示行結束符$ -n: 對顯示出的每一行進行編號 -A:顯示所有…

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