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

首頁 > 開發(fā) > Linux Shell > 正文

深入淺出Shell編程 Shell變量介紹

2020-07-27 19:26:57
字體:
供稿:網(wǎng)友

•深入淺出Shell編程: Shell 變量
◦1 系統(tǒng)變量
◦2 Shell用戶變量
■2.1 基礎
■2.2 使用技巧
■2.3 shell 中的數(shù)組
◦3 shell 環(huán)境變量
先不要管Shell的版本,來看看Shell 變量,在Shell中有三種變量:系統(tǒng)變量,環(huán)境變量,用戶變量。其中用戶變量在編程過程中使用最多,系統(tǒng)變量在對參數(shù)判斷和命令返回值判斷會使用,環(huán)境變量主要是在程序運行的時候需要設置。

1 系統(tǒng)變量

Shell常用的系統(tǒng)變量并不多,但卻十分有用,特別是在做一些參數(shù)檢測的時候。下面是Shell常用的系統(tǒng)變量
表示方法  描述 
$n  $1 表示第一個參數(shù),$2 表示第二個參數(shù) ... 
$#  命令行參數(shù)的個數(shù) 
$0  當前程序的名稱 
$?  前一個命令或函數(shù)的返回碼 
$*  以"參數(shù)1 參數(shù)2 ... " 形式保存所有參數(shù) 
$@  以"參數(shù)1" "參數(shù)2" ... 形式保存所有參數(shù) 
$$  本程序的(進程ID號)PID 
$!  上一個命令的PID 
其中使用得比較多得是 $n $# $0 $? ,看看下面的例子:

復制代碼 代碼如下:

#!/bin/sh
#This file is used to explain the shell system variable.
echo "the number of parameter is $# ";
echo "the return code of last command is $?";
echo "the script name is $0 ";
echo "the parameters are $* ";
echo "/$1 = $1 ; /$2 = $2 ";

下面是運行結(jié)果:
-bash-2.05b$ ./chapter2.1.sh winter stlchina
the number of parameter is 2
the return
 code of last command is 0
the script name is ./chapter2.1.sh
the parameters are winter stlchina
$1 = winter ; $2 = stlchina
這個例子太簡單了,一點也不實用,下面來個實用的,如果你看不懂,沒有關(guān)系,后面的內(nèi)容會有詳細解釋。
復制代碼 代碼如下:

#!/bin/sh
if [ $# -ne 2 ] ; then
echo "Usage: $0 string file";
exit 1;
fi
grep $1 $2 ;
if [ $? -ne 0 ] ; then
echo "Not Found /"$1/" in $2";
exit 1;
fi
echo "Found /"$1/" in $2";

上面的例子中使用了$0 $1 $2 $# $? 等變量,下面是程序的解釋:
1.判斷運行參數(shù)個數(shù),如果不等于2,顯示使用"用法幫助", 其中 $0 表示就是腳本自己。
2.用grep 在$2 文件中查找$1 字符串。
3.判斷前一個命令運行后的返回值(一般成功都會返回0, 失敗都會返回非0)。
4.如果沒有成功顯示沒找到相關(guān)信息,否則顯示找到了。
5.其中/"表示轉(zhuǎn)義,在"" 里面還需要顯示"號,則需要加上轉(zhuǎn)義符/" .
下面運行的例子:
./chapter2.2.sh usage chapter2.2.sh
Not Found "usage" in
 chapter2.2.sh
-bash-2.05b$ ./chapter2.2.sh Usage chapter2.2.sh     
echo
 "Usage: $0 string file";
Found "Usage" in
 chapter2.2.sh

2 Shell用戶變量

2.1 基礎
不管系統(tǒng)變量有多少,對于需求來說,總是不夠的。用戶變量是最常用到的變量,使用也十分簡單。

用戶定義的變量必須由字母數(shù)字及下劃線組成,并且變量名的第一個字符不能為數(shù)字, 與其它UNIX名字一樣,變量名是大小寫敏感的. 對于用戶變量,用戶可按如下方式賦值:

name="Winter"
在引用變量時,需在前面加$符號,用戶也可以在變量間進行相互賦值,如:

name="Winter"
WINTER=$name
echo
 "Hello $WINTER !"

輸出結(jié)果應該很清楚:Hello Winter !

這里需要注意一點:變量和'='之間不要有空格,'='和賦值也不要有空格,否則shell不會認為變量被定義。掌握了基本的使用方法,你可以完全開始你的編程工作了。不過有時候需要未雨綢繆,下面介紹用戶變量的一些技巧。

2.2 使用技巧
也可以用變量和其他字符組成新的字,這時可能需要把變量用{}括起,如:

SAT=Satur
echo
 Today is ${SAT}day
輸出結(jié)果是: Today is Saturday

有時候為了避免變量名和別的字符產(chǎn)生混淆,你最好養(yǎng)成習慣把變量名用{}括起來。

對于未賦值的變量, Shell以空值對待, 用戶也可以用unset命令清除給變量賦的值.看一個例子:

復制代碼 代碼如下:

#!/bin/sh
echo "a=$a" ;
a=2
echo "a=$a" ;
unset a
echo "a=$a" ;

先猜猜結(jié)果是什么?
-bash-2.05b$ ./test
.sh
a=
a=2
a=
如果你懂C++,你應該知道有個變量修飾符"const",用于避免程序一不小心對變量進行修改。在shell中,對于用戶變量,你可以使用同樣的修飾符"readonly", 如果我把上面的例子修改成這樣:
復制代碼 代碼如下:

#!/bin/sh
echo "a=$a" ;
#下面增加了readonly
readonly a=2   
echo "a=$a" ;
unset a
echo "a=$a" ;

其結(jié)果當然會不一樣了:
-bash-2.05b$ ./test
.sh
a=
a=2
a=2
2.3 shell 中的數(shù)組
shell變量中還能設置數(shù)組,但是不同的shell版本有不同數(shù)組賦值方法,而bourne shell 中不支持數(shù)組方式。因此,如果不是十分需要,還是建議你不要使用數(shù)組。若你的數(shù)據(jù)結(jié)構(gòu)十分復雜,必須要使用數(shù)組,那么我建議你還是選擇別的語言吧,shell不是萬能的。

shell有兩種賦值方式,第一種是直接用下標賦值:

name[0]="Tom"
name[1]="Tomy"
name[2]="John"
...
另一種方式對于不同的shell版本不一樣。bash中賦值:
[code]
#!/usr/local/bin/bash
name=("Tom" "Tomy" "John")
for i in 0 1 2
do echo $i:${name[$i]} ;
done

[html]
上面兩種賦值方式達到的效果一樣。另外,你看見訪問數(shù)組元素的方法了嗎?使用${name[index]}的方式。注意第一行使用的是#!/usr/local/bin/bash, 和以前有些不一樣哦。其輸出結(jié)果是:
-bash-2.05b$ ./test
.sh   
0:Tom
1:Tomy
2:John

3 shell 環(huán)境變量

shell 環(huán)境變量是所有shell 程序都會接受的參數(shù)。shell程序運行時,都會接收一組變量,這組變量就是環(huán)境變量。常用的環(huán)境變量:

名稱 描述
PATH 命令搜索路徑,以冒號為分隔符.注意與DOS下不同的是, 當前目錄不在系統(tǒng)路徑里
HOME 用戶home目錄的路徑名,是cd命令的默認參數(shù)
COLUMNS 定義了命令編輯模式下可使用命令行的長度
EDITOR 默認的行編輯器
VISUAL 默認的可視編輯器
FCEDIT 命令fc使用的編輯器
HISTFILE 命令歷史文件
HISTSIZE 命令歷史文件中最多可包含的命令條數(shù)
HISTFILESIZE 命令歷史文件中包含的最大行數(shù)
IFS 定義SHELL使用的分隔符
LOGNAME 用戶登錄名
MAIL 指向一個需要SHELL監(jiān)視其修改時間的文件.當該文件修改后, SHELL將發(fā)消息You hava mail給用戶
MAILCHECK SHELL檢查MAIL文件的周期,單位是秒
MAILPATH 功能與MAIL類似.但可以用一組文件,以冒號分隔,每個文件后可跟一個問號和一條發(fā)向用戶的消息
SHELL SHELL的路徑名
TERM 終端類型
TMOUT SHELL自動退出的時間,單位為秒,若設為0則禁止SHELL自動退出
PROMPT_COMMAND 指定在主命令提示符前應執(zhí)行的命令
PS1 主命令提示符
PS2 二級命令提示符,命令執(zhí)行過程中要求輸入數(shù)據(jù)時用
PS3 select的命令提示符
PS4 調(diào)試命令提示符
MANPATH 尋找手冊頁的路徑,以冒號分隔
LD_LIBRARY_PATH 尋找?guī)斓穆窂?以冒號分隔

這些變量,要關(guān)注的最多的就是PATH, 其重要性不要我說了吧?

如果你希望把你定義的變量讓其他所有的shell程序都能使用,也就是定義新的環(huán)境變量。你只要使用export關(guān)鍵詞就可以了。例如:
export
MY_NAME=Winter
export
PATH=/home/winter/bin:$PATH

上面的程序中,第一行輸出MY_NAME變量,第二行是在環(huán)境變量PATH中增加一個路徑/home/winter/bin 。如果你希望這些設置在你登陸unix/linux都有效,你需要把他們加入到你的shell啟動腳本中, 如果是使用bash

~/.bash_profile
其他版本你看一眼就知道了,在你的home目錄下,以"."開頭的文件,一般都會隱藏起來,你需要使用'ls -al'命令來顯示。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
好看的av在线不卡观看| 九九九九九伊人| 国产毛片精品| 成人国产免费电影| 日韩视频一区二区三区在线播放| 手机看片福利永久国产日韩| 亚洲ⅴ国产v天堂a无码二区| 国产成人无码专区| 国产精品av在线播放| 久久精品国产视频| av电影在线观看不卡| 亚洲第一免费视频| 国产精品久久久久久久久免费相片| 一区二区三区视频免费观看| 欧美丰满熟妇bbbbbb| 91精品国产色综合久久不卡蜜臀| 在线精品观看| 97人人模人人爽视频一区二区| 91浏览器在线视频| 丁香婷婷综合网| 波多野结衣中文字幕久久| 91精品国产高清| 91亚洲视频在线观看| 极品尤物av丝袜美腿在线观看| 日本精品va在线观看| 婷婷丁香激情综合| 亚洲大片精品免费| 午夜精品久久久久久久久久久| 婷婷国产成人精品视频| h无码动漫在线观看| 国产经典久久久| 轻轻草成人在线| 日本一区二区精品视频| 色中色在线视频| 亚洲欧美日韩一区二区三区四区| 青草伊人久久| 午夜免费一级片| 国产欧美久久久精品免费| 香港三级日本三级a视频| 欧美一级淫片007| 天天干天天操天天拍| 日韩在线一二三| 国内在线高清免费视频| 欧美不卡福利| 美女毛片免费看| 橘梨纱av一区二区三区在线观看| 国产欧美啪啪| 亚洲狼人精品一区二区三区| 欧美一区二区三区视频免费播放| 狠狠鲁狠狠操| h版电影在线播放视频网站| 先锋影音二区| 久久久水蜜桃av免费网站| 91久热免费在线视频| 无码精品在线观看| 波多野结衣精品在线| 国产污视频在线看| 中国女人内谢69xxxx免费视频| 91久久久免费一区二区| 亚州av一区二区| 日韩a级作爱片一二三区免费观看| 亚洲av无码成人精品区| 欧美国产在线视频| 久久久久久久久99精品大| 亚洲精品中字| 西西人体44www大胆无码| 欧美91视频| 亚洲视频 中文字幕| 亚洲成av人片在www色猫咪| 黄色大片在线免费观看| 亚洲的天堂在线中文字幕| 人人草人人干| 一本大道一区二区三区| 久久久免费精品| 丁香一区二区| 色综合桃花网| 天堂资源在线播放| 国产剧情一区| 91色视频在线| 中文字幕亚洲欧美在线| 精品国产一区二区在线观看| 日韩限制级电影在线观看| 久久―日本道色综合久久| 五月婷婷激情久久| 男人通一通女人的下水道| 91麻豆精品国产91久久久更新资源速度超快| 亚洲一区二区中文字幕在线观看| 欧美亚洲午夜视频在线观看| 日日噜噜噜夜夜爽爽狠狠| 一区二区三区在线观看av| 日韩黄色一区二区| 亚洲成人18| 欧美精品一区二区在线播放| 99久久亚洲一区二区三区青草| 三级网在线观看| 日韩在线观看你懂的| 小荡货+程雪柔| 国产精品久久久久9999| 0608新视觉| 中文字幕精品在线| 久久国产99| 免费av网页| 毛片在线视频播放| 亚洲视频每日更新| 欧美人与禽猛交乱配视频| 国产精品灌醉下药二区| 91视频免费在观看| 亚洲免费视频成人| 天天综合中文字幕| 国产麻豆精品| 美女av一区二区三区| 亚洲精品进入| 欧美手机在线视频| 亚洲一区www| www.99精品| 天天干天天舔天天射| 国产欧美一区二区三区沐欲| 污污视频在线免费| 不卡的国产精品| 热re99久久国产精品| 亚洲日韩欧美一区二区在线| 日韩激情视频在线播放| av日韩在线看| 日本丰满少妇xxxx| 91国产美女视频| 在线视频中文亚洲| 亲子伦视频一区二区三区| 中国特级黄色大片| 重囗味另类老妇506070| 亚洲欧美一区二区在线观看| 欧美日韩国产一区在线| 精品一卡二卡三卡| 蜜桃传媒一区二区三区| 成人国产视频在线| 精品国产一区二区亚洲人成毛片| 亚洲精蜜桃久在线| 一区二区在线看| 中文字幕永久在线视频| 亚洲精品乱码久久久久久9色| 亚洲成人免费av| 蜜桃av噜噜一区二区三区麻豆| 亚洲区第一页| 日韩视频一区二区三区| 国产精品77777竹菊影视小说| 亚洲美女黄色片| 亚洲五月综合| 四虎久久影院| 国产av一区二区三区精品| 国产探花在线精品| 17c国产在线| 欧美性高潮在线| 在线手机福利影院| 九色成人免费视频| 国产综合色区在线观看| 国产精品久久久久久久久借妻| 91精品国产99久久久久久| 欧美中文字幕精在线不卡| 国产情侣一区二区| 一区二区三区加勒比av| 国产欧美日韩在线观看| 欧美性受xxxx黑人爽| 色窝窝无码一区二区三区成人网站| 久久手机免费视频| 涩视频在线观看| 国产欧美中文字幕| 无码人妻丰满熟妇区五十路百度| 久久久久久久毛片| av网站手机在线观看| 在免费jizzjizz在线视频| 中文字幕av资源| 亚洲美腿欧美激情另类| 手机在线免费看av| 激情久久五月| 一区二区三区四区视频免费观看| 好妞色妞国产在线视频| 黄色资源在线观看| 4444亚洲人成无码网在线观看| 99福利在线| 亚洲少妇30p| 久久影院电视剧免费观看| 婷婷综合久久一区二区三区| 男女午夜视频在线观看| 亚洲精品成人悠悠色影视| 日本一本在线视频| 中国xxxx性xxxx产国| 一区二区三区视频在线看| 亚洲一级免费视频| 国产精品老熟女视频一区二区| 日韩精品视频在线观看视频| 激情五月综合色婷婷一区二区| 日本激情视频在线播放| 性中国古装videossex| 精品乱子伦一区二区三区| av岛国在线| www免费在线观看| 国产精品入口| www.五月激情| 欧美性猛交一区二区三区| 国产一级片儿| 成年人在线观看视频| 成人av一区二区三区在线观看| 色国产综合视频| 影音先锋在线国产| 精品女同一区二区三区在线观看| 精品日韩久久久| 国产麻豆视频一区| av黄色一级片| 欧美性猛交xxxx免费看| 亚洲第一区视频| 久久成年人网站| 三级毛片在线免费看| 久久精品视频va| 欧美揉bbbbb揉bbbbb| 在线h片观看| 午夜精品久久久99热福利| 欧美国产一区二区| 欧美图片欧美激情欧美精品| 91传媒视频在线播放| 第四色亚洲色图| 免费黄色av片| 久久精品成人动漫| 久久综合久久八八| 亚洲校园欧美国产另类| 色多多视频网站| 亚洲综合视频1区| 国产精品午夜在线观看| 中文在线播放一区二区| 久久出品必属精品| 91在线看www| 天堂av一区二区| 国产1区2区在线观看| 日韩 中文字幕| 一级毛片视频在线| 国产啊啊啊视频在线观看| 在线免费看污网站| 91精品国产乱码在线观看| 久久久久国产精品www| 精品视频在线免费| 色a资源在线| 亚洲在线网站| 国产三级电影在线观看| 日本一二三四区视频| 免费看污片的网站| 亚洲卡通欧美制服中文| 国产精品 日产精品 欧美精品| 亚洲第一偷拍网| 欧美视频免费看| 天天超碰亚洲| 亚洲欧美偷拍另类| 成人中文在线| 天堂蜜桃一区二区三区| 欧美三级黄美女| 91视频免费看片| av在线不卡播放| 欧美性色xo影院| 青青草视频在线观看免费| 天堂av免费观看| 日本高清不卡一区二区三区视频| 免费黄网站在线观看| 手机在线免费看片| 亚洲人metart人体| 91免费在线播放| 中文字幕乱码在线播放| 国产一区二区三区精品视频| 免费特级黄色片| 成人高清电影网站| 国产福利在线免费| 99久久亚洲国产日韩美女| 不许穿内裤随时挨c调教h苏绵| 亚洲精品视频观看| 日韩一级片在线免费观看| 一个人www视频在线免费观看| 精品性高朝久久久久久久| 欧美大肥婆大肥bbbbb| 激情综合亚洲| 国产精品激情偷乱一区二区∴| 天天操夜夜拍| 中文字幕精品久久久| 欧美激情在线狂野欧美精品| 成年网站视频| 美女日批在线观看| 成人h视频在线| 熟女少妇在线视频播放| 色综合久久av| 久久久久久久久久久9不雅视频| 中文字幕乱码一区二区三区| 高清毛片aaaaaaaa**| 欧美日韩国产一区二区三区地区| 少妇无码av无码专区在线观看| av大片在线看| 国产精品成人69xxx免费视频| 亚洲国产欧美久久| 欧美一区二区三区成人精品| 激情婷婷亚洲| 男女羞羞视频在线观看| jizzjizzxxxx| 成人18视频在线播放| 国产裸体视频网站| www.26天天久久天堂| 伊人久久大香线蕉av一区二区| 高清av在线| 视频这里只有精品| 欧美激情国产精品| 欧美午夜一区二区三区免费大片| 久久在线精品视频| 久久99久久久精品欧美| 免费成人高清视频| 日韩免费高清视频网站| 激情五月婷婷基地| 国产福利一区二区三区在线观看| 精品国产自在精品国产浪潮| 岛国最新视频免费在线观看| 国产精品一区二区亚洲| 国内毛片毛片毛片毛片| 精品久久久久久综合日本| 一区二区中文字| 免费v片在线观看| 色偷偷噜噜噜亚洲男人的天堂| 亚洲综合色成人| 麻豆传媒一区二区| 黄a在线观看| 国产精品白丝喷水在线观看| 成人在线观看www| 午夜日韩影院| 欧美日韩一级片在线观看| 欧美激情视频网址| 美女国内精品自产拍在线播放| 超碰cao国产精品一区二区|