亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

Shell編程之Shell變量學習總結

2020-07-27 19:19:00
字體:
來源:轉載
供稿:網友

一、變量操作

A.變量顯示、打印
語法:echo $var
B.變量設置
語法:var=value

變量的設置規則:
1.變量兩端不能直接接空格符
2.變量名稱只能是因為字母與數字,但開頭不能使數字
3.雙引號內的特殊字符如$等,保持原本特性

復制代碼 代碼如下:
[root@bogon ~]# var="lang is $LANG"
[root@bogon ~]# echo %var
root@bogon ~]# echo $var
lang is zh_CN.UTF-8

1. 單引號內的特殊字符則僅為一般字符
復制代碼 代碼如下:
[root@bogon ~]#
[root@bogon ~]# var='lang is $LANG';echo $var
lang is $LANG

2. 在一串命令中,還需要通過其他命令提供的信息,可用單引號‘命令'或&(命令),舉例:指令1在執行的過程中需要先知道指令2的的值,但是指令1,2在一串指令中
復制代碼 代碼如下:
[root@bogon ~]# uname -r
2.6.18-371.el5
[root@bogon ~]# cd /lib/modules/$(uname -r)/kernel
[root@bogon kernel]#

3. 變量的累加
復制代碼 代碼如下:
[root@bogon kernel]# var=${var}yes
[root@bogon kernel]# echo $var
lang is $LANGyes

4. 數組變量設置與讀取
復制代碼 代碼如下:
[root@bogon ~]# array[1]=a
[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)
語法: unset var

D.變量查看(set)
語法:set

比較重要的幾個自定義變量
HISTFILE:歷史記錄存儲位置
MAILCHECK:多少秒掃描次郵箱,查看是否有新郵件
PS1:提示符設置
$:目前這個shell的PID
?:剛才執行完命令的回傳碼。0為正確,非0為錯誤

舉例:

復制代碼 代碼如下:

比較重要的幾個自定義變量
HISTFILE:歷史記錄存儲位置
MAILCHECK:多少秒掃描次郵箱,查看是否有新郵件
PS1:提示符設置
$:目前這個shell的PID
?:剛才執行完命令的回傳碼。0為正確,非0為錯誤

E.變量鍵盤讀取(read)
語法:read [-pt] var
選項與參數:
-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)
語法:declare [-aixr] var
選項與參數
declare后不接任何內容,代表查詢所有變量,作用和set一致
-a  :將后面名為 variable的變量定義成為數組 (array)類型
-i  :將后面名為 variable的變量定義成為整數數字 (integer)類型
-x  :用法與 export一樣,就是將后面的 variable變成環境變量;
+x :將環境變量變為自定義變量
-r  :將變量配置成為 readonly類型,該變量不可被更改內容,也不能 unset(需要注銷后再登陸才能變回)

舉例:

復制代碼 代碼如下:
[plain] view plaincopyprint?
[root@bogon ~]# echo $sum 
100+50+10 =>默認當做字符串處理 
[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" =>查詢到是環境變量 
[root@bogon ~]# declare +x sum 
[root@bogon ~]# export | grep sum= >查詢不到是環境變量 
[root@bogon ~]# declare -r sum;sum=test 
bash: sum: readonly variable =>只讀允許修改 

G.變量內容刪除
語法
${var#/key}:從前往后刪除符合key最短的那一個
${var##/key}:從前往后刪除符合key最長的那一個
${var%/key}:從后往前刪除符合key最短的那一個
${var%%/key}:從后往前刪除符合key最短的那一個

舉例:${var#/key}

復制代碼 代碼如下:
[plain] view plaincopyprint?
[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}
復制代碼 代碼如下:
[plain] view plaincopyprint?
[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.變量內容替換
語法:
${var/舊字符串/新字符串}:替換第一個滿足條件的字符串
${var//舊字符串/新字符串}:替換所有滿足條件的字符串
舉例:${var/舊字符串/新字符串}

復制代碼 代碼如下:
[plain] view plaincopyprint?
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//舊字符串/新字符串}
復制代碼 代碼如下:
[plain] view plaincopyprint?
[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 

二、環境變量
普通變量可以理解為局部變量,環境變量可以理解為全局變量,登陸成功獲得的bash shell就是一個進程,在此情況下再去打開一個新SHELL就是他的子進程,子進程是無法獲取父進程的自定義變量,但是可以獲取父進程的環境變量

A.環境變量導出(export )
語法:export  var

B.環境變量查看(env )

語法:env

比較重要的幾個環境變量
HOME:代表用戶的主文件夾
SHELL:代表目前使用的shell是哪個程序,我現在使用的是/bin/bash
HISTSIZE:歷史記錄最大存儲條數
MAIL:mail命令系統收信時,系統會讀取的信箱文件
PATH:執行文件查找路徑
LANG:語系信息
RANDOM:隨機數變量(0~32767)

三、提示符的設置(PS1)
變量PS1='[/u@/h /W]/$ '記錄了命令提示符的顯示格式 [root@bogon ~]#

符號意義
/d :可顯示出[星期月日]的日期格式,如:"Mon Feb 2"
/H :完整的主機名。
/h :僅取主機名在第一個小數點之前的名字
/t :顯示時間,為 24小時格式的[HH:MM:SS]
/T :顯示時間,為 12小時格式的[HH:MM:SS]
/A :顯示時間,為 24小時格式的[HH:MM]
/@ :顯示時間,為 12小時格式的[am/pm]樣式
/u :目前使用者的賬號名稱,如[root];
/v :BASH的版本信息,如鳥哥的測試主板本為 3.2.25(1),僅取[3.2]顯示
/w :完整的工作目錄名稱,由根目錄寫起的目錄名稱。但家目錄會以 ~取代;
/W :利用 basename函數取得工作目錄名稱,所以僅會列出最后一個目錄名。
/# :下達的第幾個命令。
/$ :提示字符,如果是 root時,提示字符為 #,否則就是 $

舉例:

復制代碼 代碼如下:
[root@bogon ~]# PS1='[/u@/h/A /W /#]/$ '
[root@bogon23:45 ~ 82]#

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品手机在线| 欧美激情a∨在线视频播放| 日韩一二三在线视频播| 在线视频亚洲欧美| 欧美又大粗又爽又黄大片视频| 亚洲最大激情中文字幕| 国产精品久久久久aaaa九色| 国产精品丝袜白浆摸在线| 亚洲精选中文字幕| www国产精品com| 日韩有码在线视频| 欧美一级淫片播放口| 欧美一区二区三区精品电影| 国产成人久久久精品一区| 久久精彩免费视频| 秋霞av国产精品一区| 亚洲91精品在线观看| 日本91av在线播放| 色樱桃影院亚洲精品影院| 久久手机精品视频| 亚洲欧美另类人妖| 国产成人精品一区| 欧美巨乳在线观看| 亚洲永久免费观看| 欧美成人午夜免费视在线看片| 亚洲国产欧美日韩精品| 在线视频欧美日韩精品| 97人洗澡人人免费公开视频碰碰碰| 国产精品青草久久久久福利99| 国产激情久久久久| 亚洲少妇中文在线| 青青草原成人在线视频| 日韩一区二区av| 在线午夜精品自拍| 中文字幕久久久av一区| 欧美在线视频观看| 精品国内产的精品视频在线观看| 激情av一区二区| 亚洲成av人乱码色午夜| 亚洲人午夜精品免费| 久精品免费视频| 国产精品爽爽ⅴa在线观看| 国产精品视频播放| 亚洲国产精品99| 91在线国产电影| 久久激情视频久久| 国产日韩欧美综合| 国产一区二区美女视频| 欧美一区深夜视频| 亚洲精品国精品久久99热一| 国产在线视频2019最新视频| 亚洲在线免费看| 日韩欧美在线视频免费观看| 精品国产鲁一鲁一区二区张丽| 欧美电影免费播放| 91精品久久久久久久久久| 国产成人综合精品在线| 国产午夜精品视频免费不卡69堂| 亚洲亚裔videos黑人hd| 午夜精品久久久99热福利| 欧美超级乱淫片喷水| 欧美丰满少妇xxxxx| 亚洲精品按摩视频| 永久免费精品影视网站| 亚洲欧洲午夜一线一品| 午夜精品免费视频| 国产一区二区三区在线播放免费观看| 国产不卡在线观看| 国产亚洲欧洲高清一区| 久久精品视频在线观看| 97在线视频免费看| 欧美高跟鞋交xxxxxhd| 色av中文字幕一区| 欧美成人精品一区| 热久久99这里有精品| 成人久久久久爱| 国内精品久久影院| 日韩av在线导航| 欧美富婆性猛交| 色综合久久精品亚洲国产| 日韩激情av在线免费观看| 亚洲欧美国产日韩中文字幕| 欧美整片在线观看| 欧美精品日韩www.p站| 亚洲男人天堂视频| 精品中文字幕视频| 日韩精品久久久久久久玫瑰园| 欧美人在线视频| 亚洲人a成www在线影院| 国产欧美一区二区三区久久人妖| 亚洲xxxx18| 久久久人成影片一区二区三区观看| 欧美一区二区三区四区在线| 国产免费久久av| 日韩中文字幕网站| 亚洲欧美一区二区三区四区| 国产精品国产三级国产专播精品人| 久久久精品在线观看| 国产精品白嫩初高中害羞小美女| 亚洲精品电影网在线观看| 亚洲一区二区三区成人在线视频精品| 成人免费黄色网| 97久久精品国产| 国产亚洲视频中文字幕视频| 欧美成人性生活| 欧美日韩免费一区| 久久夜色精品亚洲噜噜国产mv| 中文字幕亚洲一区| 欧美大全免费观看电视剧大泉洋| 久久亚洲国产精品| 久久国产精品久久久久| 久操成人在线视频| 亚洲国产精品va| 狠狠色狠狠色综合日日五| 亚洲欧美中文日韩v在线观看| 亚洲欧美日韩中文在线制服| 91精品免费久久久久久久久| 国产精品一区=区| 欧美精品免费在线观看| 亚洲永久免费观看| 日韩在线视频观看正片免费网站| 久久久久久久国产精品视频| 精品视频—区二区三区免费| 久久理论片午夜琪琪电影网| 亚洲一区二区福利| 国产精品丝袜一区二区三区| 亚洲色图国产精品| 性色av一区二区咪爱| 国产成人欧美在线观看| 欧美激情视频播放| 大荫蒂欧美视频另类xxxx| 欧美剧在线观看| 久久久久国色av免费观看性色| 欧美一级免费视频| 午夜精品福利视频| 日本视频久久久| 国产精品免费福利| 亚洲国产精品专区久久| 亚洲伊人成综合成人网| 正在播放欧美视频| 久久久人成影片一区二区三区| 尤物九九久久国产精品的分类| 精品无人区太爽高潮在线播放| 91精品综合视频| 日韩一级黄色av| 日韩免费观看在线观看| 亚洲精品一区二区三区不| 欧美日韩ab片| 69影院欧美专区视频| 欧美黄色片在线观看| 九九久久综合网站| 亚洲香蕉av在线一区二区三区| 国产精品444| 欧美天堂在线观看| 8090成年在线看片午夜| 久久伊人精品视频| 不卡在线观看电视剧完整版| 91精品久久久久久久久久入口| 国产一区二区成人| 97国产在线观看| 欧美在线亚洲一区| 亚洲第一精品电影| 欧美日韩美女在线| 色av吧综合网|