數組、變量及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 09:11
下一篇 2016-08-26 09:11

相關推薦

  • N25期—第五周作業

    1、 顯示當前系統上root、fedora或user1用戶的默認shell; grep -E "^(root|fedora|user1):" /etc/passwd | cut -d: -f7 2、找出/etc/rc.d/init.d/functions文件中某單詞后面…

    Linux干貨 2017-01-02
  • http協議

    Web Service概述 web服務時一種應用程序的服務,它所提供的最主要的信息是一種超文本標記語言(HTML)、多媒體資源(如:視頻、圖片、音樂等)。HTML是一種純文字的文本信息,通過所謂的標簽來規范所要顯示的內容格式,在客戶端通過瀏覽器的形式對HTML及多媒體資源進行解析,然后呈現在終端上。主要由http和https協議實現 http協議概述 HTT…

    Linux干貨 2016-10-28
  • 磁盤管理

    1、設備文件 設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信 設備號碼: 主設備號major number,標識設備類型 次設備號minor number,標識同一類型下的不同設備 [root@localhost ~]# ll /dev/sd* brw-rw—-. 1 root disk 8,  0 Aug 25 …

    Linux干貨 2016-09-01
  • 馬哥教育網絡班20期+第2周課程練習

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。  文件管理類命令有ls,cat,touch,stat,cp,mv,rm等  ls:查看文件,其使用方法以及常用選項有: Usage: ls [OPTION]… [FILE]… 常用選項:   -a:列出所有內容,包括.和.. &…

    Linux干貨 2016-06-23
  • 從Linux小白到大?!c狼共舞的日子9

    馬哥教育網絡班21期+第9周課程練習 1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; [root@localhost ~]# cat shell.sh  #!/bin/bash # declare…

    Linux干貨 2016-12-05
  • centos系統中常用的命令

    日志文件說明:  /var/log/message      系統啟動后的信息和錯誤日志,是Red Hat Linux中最常用的日志之一   /var/log/secure      &nb…

    Linux干貨 2016-06-28

評論列表(1條)

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

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

欧美性久久久久