Shell編程之Shell變量學(xué)習(xí)總結(jié)
一、變量操作
A.變量顯示、打印
語(yǔ)法:echo $var
B.變量設(shè)置
語(yǔ)法:var=value
變量的設(shè)置規(guī)則:
1.變量?jī)啥瞬荒苤苯咏涌崭穹?BR>2.變量名稱只能是因?yàn)樽帜概c數(shù)字,但開(kāi)頭不能使數(shù)字
3.雙引號(hào)內(nèi)的特殊字符如$等,保持原本特性
[root@bogon ~]# echo %var
root@bogon ~]# echo $var
lang is zh_CN.UTF-8
1. 單引號(hào)內(nèi)的特殊字符則僅為一般字符
[root@bogon ~]# var='lang is $LANG';echo $var
lang is $LANG
2. 在一串命令中,還需要通過(guò)其他命令提供的信息,可用單引號(hào)‘命令'或&(命令),舉例:指令1在執(zhí)行的過(guò)程中需要先知道指令2的的值,但是指令1,2在一串指令中
2.6.18-371.el5
[root@bogon ~]# cd /lib/modules/$(uname -r)/kernel
[root@bogon kernel]#
3. 變量的累加
[root@bogon kernel]# echo $var
lang is $LANGyes
4. 數(shù)組變量設(shè)置與讀取
[root@bogon ~]# array[2]=b
[root@bogon ~]# array[3]=c
[root@bogon ~]# echo ${array[1]}
a
[root@bogon ~]# echo ${array[2]}
[root@bogon ~]# echo ${array[3]}
c
C.取消變量(unset)
語(yǔ)法: unset var
D.變量查看(set)
語(yǔ)法:set
比較重要的幾個(gè)自定義變量
HISTFILE:歷史記錄存儲(chǔ)位置
MAILCHECK:多少秒掃描次郵箱,查看是否有新郵件
PS1:提示符設(shè)置
$:目前這個(gè)shell的PID
?:剛才執(zhí)行完命令的回傳碼。0為正確,非0為錯(cuò)誤
舉例:
比較重要的幾個(gè)自定義變量
HISTFILE:歷史記錄存儲(chǔ)位置
MAILCHECK:多少秒掃描次郵箱,查看是否有新郵件
PS1:提示符設(shè)置
$:目前這個(gè)shell的PID
?:剛才執(zhí)行完命令的回傳碼。0為正確,非0為錯(cuò)誤
E.變量鍵盤讀取(read)
語(yǔ)法:read [-pt] var
選項(xiàng)與參數(shù):
-p:后可跟提示信息
-t:后跟等待輸入的描述
舉例:
[plain] view plaincopyprint?
[root@bogon ~]# read atest
this is a test
[root@bogon ~]# echo $atest
this is a test
[root@bogon ~]# read -p "please input.. " attest
please input.. hello world =>提示信息
[root@bogon ~]# echo $atest
hello world
[root@bogon ~]# read -p "please input.. " -t 5 atest
please input.. =>5秒未輸入回到命令行模式
[root@bogon ~]#
[root@bogon ~]# echo $atest
hello world
F.變量聲明(declare)
語(yǔ)法:declare [-aixr] var
選項(xiàng)與參數(shù)
declare后不接任何內(nèi)容,代表查詢所有變量,作用和set一致
-a :將后面名為 variable的變量定義成為數(shù)組 (array)類型
-i :將后面名為 variable的變量定義成為整數(shù)數(shù)字 (integer)類型
-x :用法與 export一樣,就是將后面的 variable變成環(huán)境變量;
+x :將環(huán)境變量變?yōu)樽远x變量
-r :將變量配置成為 readonly類型,該變量不可被更改內(nèi)容,也不能 unset(需要注銷后再登陸才能變回)
舉例:
[root@bogon ~]# echo $sum
100+50+10 =>默認(rèn)當(dāng)做字符串處理
[root@bogon ~]# declare -i sum=100+50+10
[root@bogon ~]# echo $sum
160 =>聲明為int 因此可以做加法
[root@bogon ~]# declare -x sum
[root@bogon ~]# export | grep sum
declare -ix sum="160" =>查詢到是環(huán)境變量
[root@bogon ~]# declare +x sum
[root@bogon ~]# export | grep sum= >查詢不到是環(huán)境變量
[root@bogon ~]# declare -r sum;sum=test
bash: sum: readonly variable =>只讀允許修改
G.變量?jī)?nèi)容刪除
語(yǔ)法
${var#/key}:從前往后刪除符合key最短的那一個(gè)
${var##/key}:從前往后刪除符合key最長(zhǎng)的那一個(gè)
${var%/key}:從后往前刪除符合key最短的那一個(gè)
${var%%/key}:從后往前刪除符合key最短的那一個(gè)
舉例:${var#/key}
[root@bogon ~]# path=${PATH};echo $path
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
[root@bogon ~]# echo ${path#/*:} =>key為*.(*為通配符)
/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
舉例:${var##/key}
[root@bogon ~]# path=${PATH};echo $path
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
[root@bogon ~]# echo ${path##/*:}
/root/bin
H.變量?jī)?nèi)容替換
語(yǔ)法:
${var/舊字符串/新字符串}:替換第一個(gè)滿足條件的字符串
${var//舊字符串/新字符串}:替換所有滿足條件的字符串
舉例:${var/舊字符串/新字符串}
root@bogon ~]# path=${PATH};echo $path
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
[root@bogon ~]# echo ${path/sbin/SBIN}
/usr/kerberos/SBIN:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
舉例:${var//舊字符串/新字符串}
[root@bogon ~]# path=${PATH};echo $path
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
[root@bogon ~]# echo ${path//sbin/SBIN}
/usr/kerberos/SBIN:/usr/kerberos/bin:/usr/local/SBIN:/usr/local/bin:/SBIN:/bin:/usr/SBIN:/usr/bin:/usr/X11R6/bin:/root/bin
二、環(huán)境變量
普通變量可以理解為局部變量,環(huán)境變量可以理解為全局變量,登陸成功獲得的bash shell就是一個(gè)進(jìn)程,在此情況下再去打開(kāi)一個(gè)新SHELL就是他的子進(jìn)程,子進(jìn)程是無(wú)法獲取父進(jìn)程的自定義變量,但是可以獲取父進(jìn)程的環(huán)境變量
A.環(huán)境變量導(dǎo)出(export )
語(yǔ)法:export var
B.環(huán)境變量查看(env )
語(yǔ)法:env
比較重要的幾個(gè)環(huán)境變量
HOME:代表用戶的主文件夾
SHELL:代表目前使用的shell是哪個(gè)程序,我現(xiàn)在使用的是/bin/bash
HISTSIZE:歷史記錄最大存儲(chǔ)條數(shù)
MAIL:mail命令系統(tǒng)收信時(shí),系統(tǒng)會(huì)讀取的信箱文件
PATH:執(zhí)行文件查找路徑
LANG:語(yǔ)系信息
RANDOM:隨機(jī)數(shù)變量(0~32767)
三、提示符的設(shè)置(PS1)
變量PS1='[\u@\h \W]\$ '記錄了命令提示符的顯示格式 [root@bogon ~]#
符號(hào)意義
\d :可顯示出[星期月日]的日期格式,如:"Mon Feb 2"
\H :完整的主機(jī)名。
\h :僅取主機(jī)名在第一個(gè)小數(shù)點(diǎn)之前的名字
\t :顯示時(shí)間,為 24小時(shí)格式的[HH:MM:SS]
\T :顯示時(shí)間,為 12小時(shí)格式的[HH:MM:SS]
\A :顯示時(shí)間,為 24小時(shí)格式的[HH:MM]
\@ :顯示時(shí)間,為 12小時(shí)格式的[am/pm]樣式
\u :目前使用者的賬號(hào)名稱,如[root];
\v :BASH的版本信息,如鳥哥的測(cè)試主板本為 3.2.25(1),僅取[3.2]顯示
\w :完整的工作目錄名稱,由根目錄寫起的目錄名稱。但家目錄會(huì)以 ~取代;
\W :利用 basename函數(shù)取得工作目錄名稱,所以僅會(huì)列出最后一個(gè)目錄名。
\# :下達(dá)的第幾個(gè)命令。
\$ :提示字符,如果是 root時(shí),提示字符為 #,否則就是 $
舉例:
[root@bogon23:45 ~ 82]#
相關(guān)文章
用來(lái)檢測(cè)輸入的選項(xiàng)$1是否在PATH中的shell腳本
今天無(wú)意中發(fā)現(xiàn)一本挺有意思的shell編程的書,是e文的,內(nèi)容是101個(gè)shell案例,堅(jiān)持明天看一個(gè),寫點(diǎn)心得2016-08-08Linux使用curl訪問(wèn)網(wǎng)頁(yè)和wget下載文件
這篇文章介紹了Linux使用curl命令訪問(wèn)網(wǎng)頁(yè)和wget下載文件的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Shell腳本中的位置變量參數(shù)(特殊字符)實(shí)例講解
這篇文章主要介紹了Shell腳本中的位置變量參數(shù)(特殊字符)實(shí)例講解,本文講解了$#、$* 、$$ 、$!、$@、$-、$?等特殊字符的作用,并給出使用實(shí)例,比較清晰和簡(jiǎn)潔,需要的朋友可以參考下2015-05-05linux動(dòng)態(tài)鏈接庫(kù)使用方法分享
這篇文章主要介紹了linux動(dòng)態(tài)鏈接庫(kù)使用方法,大家參考使用吧2014-01-01Linux shell數(shù)組循環(huán)的實(shí)例詳解
這篇文章主要介紹了Linux shell數(shù)組循環(huán)的實(shí)例詳解的相關(guān)資料,這里舉例說(shuō)明如何實(shí)現(xiàn)shell數(shù)組循環(huán),需要的朋友可以參考下2017-08-08Linux Shell+Curl網(wǎng)站健康狀態(tài)檢查腳本,抓出中國(guó)博客聯(lián)盟失聯(lián)站點(diǎn)
這篇文章主要介紹了Shell+Curl網(wǎng)站健康狀態(tài)檢查腳本,抓出中國(guó)博客聯(lián)盟失聯(lián)站點(diǎn),需要的朋友可以參考下2016-02-02Shell腳本對(duì)比兩個(gè)文本文件找出不同行的2個(gè)方法分享
這篇文章主要介紹了Shell腳本對(duì)比兩個(gè)文本文件找出不同行的2個(gè)方法分享,本文分別使用comm命令法、grep命令法實(shí)現(xiàn),需要的朋友可以參考下2014-12-12shell腳本監(jiān)控系統(tǒng)負(fù)載、CPU和內(nèi)存使用情況
這篇文章主要介紹了shell腳本監(jiān)控系統(tǒng)負(fù)載、CPU和內(nèi)存使用情況,本文分別給出監(jiān)控服務(wù)器系統(tǒng)負(fù)載情況、監(jiān)控系統(tǒng)cpu使用情況、、監(jiān)控系統(tǒng)內(nèi)存情況、監(jiān)控系統(tǒng)交換分區(qū)swap使用情況的腳本,需要的朋友可以參考下2014-12-12