數組知識與編譯安裝
一數組知識
1、定義數組
聲明數組:
declare -a ARRAY_NAME
declare -A ARRAY_NAME: 關聯數組
數組元素的賦值:
(1) 一次只賦值一個元素;
ARRAY_NAME[INDEX]=VALUE
weekdays[0]="Sunday"
weekdays[4]="Thursday"
pp[1]="sun"
(2) 一次賦值全部元素:
ARRAY_NAME=("VAL1" "VAL2" "VAL3" …) arr=(1 3 4 5)
(3) 只賦值特定元素:
ARRAY_NAME=([0]="VAL1" [3]="VAL2" …)
(4) 交互式數組值對賦值
read -a ARRAY
2、數組引用
引用數組元素:${ARRAY_NAME[INDEX]}
注意:省略[INDEX] 表示引用下標為0 的元素
數組的長度( 數組中元素的個數):
${#ARRAY_NAME[*]}
${#ARRAY_NAME[@]}
另外:我發現利用${#arr[3]}可以顯示出arr數組中第四個元素的字符串長度。
示例:生成10 個隨機數保存于數組中,并找其中的最小值和最大值。
3、數組數據處理
引用數組中的元素:
所有元素:${ARRAY[@]}, ${ARRAY[*]}
數組切片:${ARRAY[@]:offset:number}
offset: 要跳過的元素個數
number: 要取出的元素個數
取偏移量之后的所有元素
${ARRAY[@]:offset}
向數組中追加元素:
ARRAY[${#ARRAY[*]}]
刪除數組中的某元素:導致稀疏格式
unset ARRAY[INDEX]
關聯數組:
declare -A ARRAY_NAME
ARRAY_NAME=([idx_name1]=('val1' [idx_name2]='val2‘…)
4、字符串處理
(1)bash 的字符串處理工具:
字符串切片:
${#var}: 返回字符串變量var 的長度
${var:offset}: 返回 字符串變量var 中從第offset 個字符后(不包括第offset 個字符)的字符開始,到最后的部分,
offset 的取值在0 到 到 ${#var}-1 之間
${var:offset:number} :返回 字符串變量var 中從第offset 個字符 后(不包括第offset 個字符)的字符開始 ,長度為number 的部分
${var: -lengh} :取字符串的最右側幾個字符:
注意:冒號后必須有一空白字符
(2)基于模式取子串:
${var#*word} :其中word 可以是指定的任意字符
功能:自左而右,查找var 變量所存儲的字符串中,第一
次出現的word, 刪除字符串開頭至第一次出現word 字符之間的所有字符。
${var##*word} :同上,不同的是,刪除的是字符串開頭至最后一次由word 指定的字符之間的所有內容。
file="/var/log/messages"
${file##*/}: messages
${var%word*} :其中word 可以是指定的任意字符;
功能:自右而左,查找var 變量所存儲的字符串中,第一
次出現的word, 刪除字符串最后一個字符向左至第一次出現
word 字符之間的所有字符;
file="/var/log/messages"
${file%/*}: /var/log
${var%%word*} :同上,只不過刪除字符串最右側的字符向
左至最后一次出現word 字符之間的所有字符;
示例: :url=http://www.magedu.com:80
${url##*:} 80
${url%%:*} http
(3)查找替換:
${var/pattern/substi} :查找var 所表示的字符串中,第一次被pattern 所匹配到的字符串,以substi 替換之。
${var//pattern/substi}: 查找var 所表示的字符串中,所有能被pattern 所匹配到的字符串,以substi 替換之。
${var/#pattern/substi} :查找var 所表示的字符串中,行首被pattern 所匹配到的字符串,以substi 替換之。
${var/%pattern/substi} :查找var 所表示的字符串中,行尾被pattern 所匹配到的字符串,以substi替換之。
查找并刪除:
${var/pattern} :查找var 所表示的字符串中,刪除第一次被pattern 所匹配到的字符串
${var//pattern} :刪除所有匹配到的字符串
${var/#pattern} :刪除行首匹配的字符串
${var/%pattern} :行尾
字符大小寫轉換:
${var^^} :把var 中的所有小寫字母轉換為大寫
${var,,} :把var 中的所有大寫字母轉換為小寫
(4)變量賦值
${var:-value} :如果var 為空或未設置,那么返回value ;否
則,則返回var 的值
${var:+value} :如果var 不空,則返回value
${var:=value} :如果var 為空或未設置,那么返回value ,并
將 將value 賦值給var ;否則,則返回var 的值
${var:?error_info} :如果var 為空或未設置,那么返回
error_info ;否則,則返回var 的值
為腳本程序使用配置文件, 實現變量賦值
(1) 定義文本文件,每行定義“name=value”
(2) 在腳本中source此文件即可。
(5)高級變量
Shell 變量一般是無類型的,但是bash Shell 提供了declare和 和
typeset 兩個命令用于指定變量的類型,兩個命令是完全等價
的。
declare [ 選項] 變量名
-r 將變量設置為只讀屬性
-i 將變量定義為整型數
-a 將變量定義為數組
-f 顯示此腳本前定義過的所有函數名及其內容
-F 僅顯示此腳本前定義過的所有函數名
-x 將變量聲明為環境變量
-l 將變量值轉為小寫字母
-u 將變量值轉為大寫字母
(6)間接變量引用
如果第一個變量的值是第二個變量的名字,從第一個變量引
用第二個變量的值就稱為間接變量引用
variable1=variable2
variable2=value
variable1 的值是variable2 ,而variable2 又是變量名,
variable2 的值為value ,間接變量引用是指通過variable1獲 獲
得變量值value 的行為。
bash Shell 提供了兩種格式實現間接變量引用
eval tempvar=\$$variable1
tempvar=${!variable1}
eval 命令將會首先掃描命令行進行所有的置換,然后再執
行該命令。該命令適用于那些一次掃描無法實現其功能的
變量。該命令對變量進行兩次掃描 。
示例:
[root@server ~]# V1=pwd
[root@server ~]# echo $V1
pwd
[root@server ~]# eval $V1
/root
(7)創建臨時文件
mktemp 命令:創建的臨時文件可避免沖突
mktemp [OPTION]… [TEMPLATE]
TEMPLATE: filename.XXX
X 至少要出現三個
OPTION: :
-d: 創建臨時目錄
–tmpdir=/DIR :指明臨時文件所存放的目錄位置
實例:
#mktemp –tmpdir=/testdir test.XXXXXX
(8)bash配置
bash 的配置文件
按生效范圍劃分,存在兩類:
全局配置:
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
個人配置:
~/.bash_profile
~/.bashrc
(9)Profile類
按功能劃分,存在兩類:
profiile 類和bashrc類 類
profile 類:為交互式登錄的shell 提供配置
全局:/etc/profile, /etc/profile.d/*.sh
個人:~/.bash_profile
功用:
(1) 用于定義環境變量
(2) 運行命令或腳本
(10)Bashrc類
bashrc 類:為非交互式和交互式登錄的shell 提供配置
全局:/etc/bashrc
個人:~/.bashrc
功用:
(1) 定義命令別名和函數
(2) 定義本地變量
(11)編輯配置文件生效
修改profile 和bashrc 文件后需生效
兩種 方法:
1 重新啟動shell 進程
2 . 或source
例 例:
. ~/.bashrc
二編譯安裝
編譯安裝的過程總結
二進制文件 編譯安裝的步驟
1、安裝包組
yum groupinstall "Development tools"
2、下載并解開源碼包
(1)連接至10.1.0.1
此過程使用lftp 10.1.0.1由于未安裝ftp,出現了未找到命令的報錯。安裝lftp即可。
(2)get httpd-2.2.29.tar.bz2 即可將目標文件下載至當前目錄下
(3)tar xvf httpd-2.2.29.tar.bz2 解壓文件
3 、./configure
要確保在httpd-2.2.29此目錄下
./configure –prefix=/usr/local/http2 –sysconfdir=/etc/http2
此時會生成一個Makefile的文件。
4 、make
調用系統中gcc等工具,生成二進制文件
5 、make install
此時會生成http2的目錄了
6 、啟動web服務程序
netstat -atn
./apachectl start
7 、測試:關防火墻,瀏覽器訪問
iptables -vnL 顯示防火墻狀態
iptables -F 臨時關閉防火墻
yum install links 文字性的瀏覽器
links 10.1.44.3 index2.html
安裝后的配置
1、二進制程序目錄導入至PATH環境變量中,編輯文件/etc/profile.d/NAME.sh export PATH=/PATH/TO/BIN:$PATH
實際操作:在/etc/profile.d/http2.sh文件內定義環境變量PATH=$PATH:/usr/local/http2/bin
2、導入庫文件路徑
編輯/etc/ld.so.conf.d/NAME.conf
添加新的庫文件所在目錄至此文件中;
讓系統重新生成緩存:
ldconfig [-v]
實際操作:cd /etc/ld.so.conf.d/ 編輯 vim http2.conf
3、導入頭文件 基于鏈接的方式實現:ln -sv
實際操作:在/usr/include路徑下創建軟鏈接ln -s /usr/local/http2/include/ http2
4、導入幫助手冊
編輯/etc/man.config|man_db.conf 文件
添加一個MANPATH
實際操作:編輯vim /etc/man.config文件添加/usr/local/http2/man
原創文章,作者:178babyhanggege,如若轉載,請注明出處:http://www.www58058.com/40060