數組、變量及bash的配置

數組、變量及bash的配置

變量:存儲單個元素的內存空間

數組:存儲多個元素的內存空間,相當于多個變量集合

索引:編號從0開始,屬于數值索引,索引為自定義格式即為關聯數組(bash4.0之后支持) bash數組支持稀疏格式

數組的聲明

普通數組declare –a

關聯數組 declare –A

普通數組可以不聲明直接使用,關聯數組必須先聲明再使用

數組的賦值:(arr代表數組)

1一次只賦一個值 arr[n]=

2一次賦全部值arr=n1 n2 n3…..)支持arr={n1…n2})格式

3只賦值特定元素arr=(a[n1]=    a[n2]= …..)

4交互式賦值  read –a arr

引用數組元素: ${arr[n]}省略n時代表下標為0

數組長度(數組元素個數): ${}#arr[@|*]}

數組中所有元素${arr[@]}${arr[*]}

數組切片${arr[*]offsetnumber}

offset:要跳過的元素個數

number:取出的元素個數

向數組中追加元素arr[${#arr[*]}]

刪除數組中元素:unset arr[n]

字符串切片(var代表變量)

${#var}:顯示變量的字符長度

${varoffsetnumber}

offset:要跳過的字符個數

number:取出的字符個數

${var  -#}:從右向左計算取出#個字符

${var#1  -#}:跳過前#1個字符,取到倒數#2個字符之前

基于模式取子串

${變量#*字符}:從左向右找到變量所存儲字符串第一次匹配到的字符串,刪除匹配到的字符串左側包括匹配到字符串本身的字符

${變量##*字符}:從左向右找到變量所存儲字符串最后一次匹配到的字符串,刪除匹配到的字符串左側包括匹配到字符串本身的字符

${變量 %*字符}:從右向左找到變量所存儲字符串第一次匹配到的字符串,刪除匹配到的字符串右側包括匹配到字符串本身的字符

${變量 %%*字符}:從右向左找到變量所存儲字符串最后一次匹配到的字符串,刪除匹配到的字符串右側包括匹配到字符串本身的字符

字符串的查找替換

${變量/要替換的/替換為}:替換第一個找到的字符串

${變量//要替換的/替換為}:替換所有找到的字符串

${變量/#要替換的/替換為}:只替換在行首匹配到的字符串

${變量/%要替換的/替換為}:只替換在行首匹配到的字符串

${變量^^}:將變量中所有字母轉化為大寫

${變量,,}:將變量中所有字母轉化為小寫

${變量:-value}:若變量為空或未設置則返回value值,否則返回變量值

${變量:+value}:若變量為空或未設置則返回空,否則返回value

${變量:=value}:若變量為空或未設置則返回value值并將value值賦給變量,否則返回變量值

${變量:?error}:若變量為空或未設置則返回錯誤信息,否則返回變量值

declare:定義數組,變量

-r:定義只讀變量

-i:定義整形變量

-a:定義數組

-A:定義關聯數組

-f:查看當前shell定義的所有函數

-F:查看當前shell定義的所有函數名

-x:定義環境變量

-l:將變量內容轉化為大寫

-u:將變量內容轉化為小寫

typeset=declare

變量的間接引用

eval  #=\$$變量

#=${!變量}

eval會對變量進行兩次掃描,會首先掃描命令行進行所有的置換再運行命令

mktemp:創建臨時文件,文件名后綴為3個以上XXX

-d:創建臨時目錄

install:復制

-d:創建空目錄 

-m:指定復制后文件權限

-o:指定復制后文件所有者

-g:指定復制后文件所屬組

bash的配置文件

全局:/etc/profile  /etc/profile.d/*.sh  /etc/bashrc

個人:~/.bash_profile   ~/.bashrc

登錄分為交互式登錄和非交互式登錄

交互式登錄:直接通過終端登錄,使用su –切換

非交互式登錄:圖形界面下打開的終端,su切換,腳本

交互式登錄訪問配置文件順序:/etc/profile  /etc/profile.d/*.sh  ~/.bash_profile   ~/.bashrc  /etc/bashrc

非交互式登錄訪問配置文件順序:~/.bashrc  /etc/bashrc  /etc/profile.d/*.sh

profile類配置文件一般存放環境變量,命令或腳本

bashrc類配置文件一般存放本地變量,別名,函數

修改配置文件后要用.source命令使配置生效

.bash_logout:退出時的腳本

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

(0)
zzzzz1357x1zzzzz1357x1
上一篇 2016-08-26
下一篇 2016-08-26

相關推薦

  • 第三周

    第三周blog 第三周blog 1    列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。    # who|cut -d’ ‘ -f 1 |sort -u 2    取出最后登錄到當前系統的用戶的相關信息。  …

    Linux干貨 2016-12-19
  • 基于iptables mangle的lvs && lvs的持久連接

    一、lvs-dr類型:也稱direct routing,簡稱為g(gatewaying);配置lvs-dr基于iptables mangle的實現方式  實驗圖:  地址規劃:    VIP: 172.16.2.100    DIP: 172.16.2.13    RIP1:17…

    Linux干貨 2015-06-30
  • 誰說C語言很簡單?

    前兩天,Neo寫了一篇《語言的歧義》其使用C語言討論了一些語言的歧義。大家應該也順便了解了一下C語言中的很多不可思異的東西,可能也是你從未注意到的東西。 是的,C語言并不簡單,讓我們來看看下面這些示例: 為什么下面的代碼會返回0?(這題應該很簡單吧) int x;   return x == (1&…

    Linux干貨 2016-03-20
  • CentOS開發環境搭建

        一個月之前將系統換為Linux,昨天系統運行的時候突然死機,開機之后進不了系統,并且BIOS無法識別硬盤,無奈只有在普通硬盤上重裝系統。搭建開發環境,為了避免再次遇到類似現象,或在下次遇到這類問題快速搭建開發環境,記錄開發環境搭建的過程。 1、啟用wifi echo "blacklist&n…

    Linux干貨 2016-08-04
  • Linux系統之用戶和組

    Linux系統之用戶和組 1、什么是用戶 用戶:資源獲取標識符,資源分配,安全權限模型的核心要素之一 2、沒有用戶,操作系統可否正常執行? 答案是肯定的 在Linux系統上,用戶管理是基于用戶名和密碼的方式進行資源的分配, Username/UID分為以下類別:     管理員:root, 0  &…

    Linux干貨 2016-08-04
  • DNS

    DNS DNS解析 DNS名稱解析方式:名稱 –> IP:正向解析IP –> 名稱:反向解析注意:二者的名稱空間,非為同一個空間,即非為同一棵樹;因此,也不是同一個解析庫; DNS查詢類型:遞歸查詢:一般是客戶機和服務器之間的查詢;即只發送一個請求,其他的工作交由上層服務器去解決;迭代查詢:一般是服務器和服務器之間的凡是,…

    Linux干貨 2017-05-31

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-26 09:22

    文章對各知識點進行了完整的概述,不過在思路上可以盡量詳細點,郵資機的思路,而不是僅僅羅列知識點,讓他們能能順暢出的串起來成為一篇優秀的博客。

欧美性久久久久