成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Linux Shell 腳本編程入門教程

Linux Shell 腳本編程入門教程

熱門標簽:怎么在百度地圖標注公司的位置 天津電話外呼系統(tǒng)排名 測繪地圖標注名稱 百度地圖標注直線距離 德陽400電話申請 智能電銷機器人有用嗎 外呼電話系統(tǒng)怎么操作 商機地圖標注 鶴崗400電話申請

從程序員的角度來看, Shell本身是一種用C語言編寫的程序,從用戶的角度來看,Shell是用戶與Linux操作系統(tǒng)溝通的橋梁。用戶既可以輸入命令執(zhí)行,又可以利用 Shell腳本編程,完成更加復(fù)雜的操作。在Linux GUI日益完善的今天,在系統(tǒng)管理等領(lǐng)域,Shell編程仍然起著不可忽視的作用。深入地了解和熟練地掌握Shell編程,是每一個Linux用戶的必修 功課之一。

Linux的Shell種類眾多,常見的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell語言的語法有所不同,所以不能交換使用。每種Shell都有其特色之處,基本上,掌握其中任何一種 就足夠了。在本文中,我們關(guān)注的重點是Bash,也就是Bourne Again Shell,由于易用和免費,Bash在日常工作中被廣泛使用;同時,Bash也是大多數(shù)Linux系統(tǒng)默認的Shell。在一般情況下,人們并不區(qū)分 Bourne Shell和Bourne Again Shell,所以,在下面的文字中,我們可以看到#!/bin/sh,它同樣也可以改為#!/bin/bash。

利用vi等文本編輯器編寫Shell腳本的格式是固定的,如下:

#!/bin/sh
#comments
Your commands go here

首行中的符號#!告訴系統(tǒng)其后路徑所指定的程序即是解釋此腳本文件的Shell程 序。如果首行沒有這句話,在執(zhí)行腳本文件的時候,將會出現(xiàn)錯誤。后續(xù)的部分就是主程序,Shell腳本像高級語言一樣,也有變量賦值,也有控制語句。除第 一行外,以#開頭的行就是注釋行,直到此行的結(jié)束。如果一行未完成,可以在行尾加上",這個符號表明下一行與此行會合并為同一行。

編輯完畢,將腳本存盤為filename.sh,文件名后綴sh表明這是一個Bash腳本文件。執(zhí)行腳本的時候,要先將腳本文件的屬性改為可執(zhí)行的:

chmod +x filename.sh

執(zhí)行腳本的方法是:

./filename.sh

下面我們從經(jīng)典的“hello world”入手,看一看最簡單的Shell腳本的模樣。

#!/bin/sh
#print hello world in the console window
a = "hello world"
echo $a

Shell Script是一種弱類型語言,使用變量的時候無需首先聲明其類型。新的變量會在本地數(shù)據(jù)區(qū)分配內(nèi)存進行存儲,這個變量歸當前的Shell所有,任何子進 程都不能訪問本地變量。這些變量與環(huán)境變量不同,環(huán)境變量被存儲在另一內(nèi)存區(qū),叫做用戶環(huán)境區(qū),這塊內(nèi)存中的變量可以被子進程訪問。變量賦值的方式是:

variable_name = variable_value

如果對一個已經(jīng)有值的變量賦值,新值將取代舊值。取值的時候要在變量名前加$,$variable_name可以在引號中使用,這一點和其他高級語言是明顯不同的。如果出現(xiàn)混淆的情況,可以使用花括號來區(qū)分,例如:

echo "Hi, $as"

就不會輸出“Hi, hello worlds”,而是輸出“Hi,”。這是因為Shell把$as當成一個變量,而$as未被賦值,其值為空。正確的方法是:

echo "Hi, ${a}s"

單引號中的變量不會進行變量替換操作。
關(guān)于變量,還需要知道幾個與其相關(guān)的Linux命令。

env用于顯示用戶環(huán)境區(qū)中的變量及其取值;set用于顯示本地數(shù)據(jù)區(qū)和用戶環(huán)境區(qū)中的變量及其取值;unset用于刪除指定變量當前的取值,該值將被指定為NULL;export命令用于將本地數(shù)據(jù)區(qū)中的變量轉(zhuǎn)移到用戶環(huán)境區(qū)。

下面我們來看一個更復(fù)雜的例子,結(jié)合這個例子,我們來講述Shell Script的語法。

 #!/bin/bash
 # we have less than arguments. Print the help text:
 if [ $# -lt ]; then
 catHELP
    ren -- renames a number of files using sed regular expressions
    USAGE: ren 'regexp' 'replacement' files
    EXAMPLE: rename all *.HTM files in *.html:
    ren 'HTM$' 'html' *.HTM
 HELP
   exit 
 fi
 OLD="$"
 NEW="$"
 # The shift command removes one argument from the list of
 # command line arguments.
 shift
 shift
 # $* contains now all the files:
 for file in $*; do
 if [ -f "$file" ]; then
   newfile=`echo "$file" | sed "s/${OLD}/${NEW}/g"`
     if [ -f "$newfile" ]; then
       echo "ERROR: $newfile exists already"
     else
       echo "renaming $file to $newfile "
       mv "$file" "$newfile"
     fi
 fi
 done

我們從頭來看,前面兩行上一個例子中已經(jīng)解釋過了,從第三行開始,有新的內(nèi)容。if語句和其他編程語言相似,都是流程控制語句。它的語法是:

if …; then
…
elif …; then
…
else
…
fi

與其他語言不同,Shell Script中if語句的條件部分要以分號來分隔。第三行中的[]表示條件測試,常用的條件測試有下面幾種:

[ -f "$file" ] 判斷$file是否是一個文件

[ $a -lt 3 ] 判斷$a的值是否小于3,同樣-gt和-le分別表示大于或小于等于

[ -x "$file" ] 判斷$file是否存在且有可執(zhí)行權(quán)限,同樣-r測試文件可讀性

[ -n "$a" ] 判斷變量$a是否有值,測試空串用-z

[ "$a" = "$b" ] 判斷$a和$b的取值是否相等

[ cond1 -a cond2 ] 判斷cond1和cond2是否同時成立,-o表示cond1和cond2有一成立

要注意條件測試部分中的空格。在方括號的兩側(cè)都有空格,在-f、-lt、=等符號兩側(cè)同樣也有空格。如果沒有這些空格,Shell解釋腳本的時候就會出錯。

$#表示包括$0在內(nèi)的命令行參數(shù)的個數(shù)。在Shell中,腳本名稱本身是$0,剩下的依次是$0、$1、$2…、${10}、${11},等等。$*表示整個參數(shù)列表,不包括$0,也就是說不包括文件名的參數(shù)列表。

現(xiàn)在我們明白第三行的含義是如果腳本文件的參數(shù)少于三個,則執(zhí)行if和fi語句之間 的內(nèi)容。然后,從第四行到第十一行之間的內(nèi)容在Shell Script編程中被稱為Here文檔,Here文檔用于將多行文本傳遞給某一命令。Here文檔的格式是以開始,后跟一個字符串,在 Here文檔結(jié)束的時候,這個字符串同樣也要出現(xiàn),表示文檔結(jié)束。在本例中,Here文檔被輸出給cat命令,也即將文檔內(nèi)容打印在屏幕上,起到顯示幫助 信息的作用。

第十二行的exit是Linux的命令,表示退出當前進程。在Shell腳本中可以使用所有的Linux命令,利用上面的cat和exit,從一方面來說,熟練使用Linux命令也可以大大減少Shell腳本的長度。

十四、十五兩句是賦值語句,分別將第一和第二參數(shù)賦值給變量OLD和NEW。緊接下來的兩句是注釋,注釋下面的兩條shift的作用是將參數(shù)列表中的第一個和第二個參數(shù)刪除,后面的參數(shù)依次變?yōu)樾碌牡谝缓偷诙?shù),注意參數(shù)列表原本也不包括$0。

然后,自二十一行到三十一行是一個循環(huán)語句。Shell Script中的循環(huán)有下面幾種格式:

while [ cond1 ]  { || } [ cond2 ] …; do
…
done
for var in …; do
…
done
for (( cond1; cond2; cond3 )) do
…
done
until [ cond1 ]  { || } [ cond2 ] …; do
…
done

在上面這些循環(huán)中,也可以使用類似C語言中的break和continue語句中斷 當前的循環(huán)操作。第二十一行的循環(huán)是將參數(shù)列表中的參數(shù)一個一個地放入變量file中。然后進入循環(huán),判斷file是否為一個文件,如果是文件的話,則用 sed命令搜索和生成新的文件名。sed基本上可以看成一個查找替換程序,從標準輸入,例如管道讀入文本,并將結(jié)果輸出到標準輸出,sed使用正則表達式 進行搜索。在第二十三行中,backtick(`)的作用是取出兩個backtick之間的命令輸出結(jié)果,在這里,也就是將結(jié)果取出賦給變量 newfile。此后,判斷newfile是否已經(jīng)存在,否則就把file改成newfile。這樣我們就明白這個腳本的作用了,Shell Script編寫的其他腳本與此相似,只不過是語法和用法稍有不同而已。

通過這個例子我們明白了Shell Script的編寫規(guī)則,但還有幾件事情需要講述一下。

第一個,除了if語句之外,Shell Script中也有類似C語言中多分支結(jié)構(gòu)的case語句,它的語法是:

case var in
pattern 1 )
… ;;
pattern 2 )
… ;;
*)
… ;;
esac

我們再就下面一個例子,看看case語句的用法。

while getopts vc: OPTION
do
case $OPTION in
c) COPIES=$OPTARG
   ehco "$COPIES";;
v) echo "suyang";;
\&;) exit 1;;
esac
done

上面的getopts類似于C語言提供的函數(shù)getopts,在Shell Script中,getopts經(jīng)常和while語句聯(lián)合起來使用。getopts的語法如下:

getopts option_string variable

option_string中包含一串單字符選項,若getopts在命令行參數(shù)中 發(fā)現(xiàn)了連字符,那么它會將連字符之后的字符與option_string進行比較,若匹配成功,則把變量variable的值設(shè)為該選項,若無匹配,則把 變量的值設(shè)為?。有時候,選項還會帶一個值,例如-c5等,這時要在option_string中該選項字母后面加上一個冒號,getopts發(fā)現(xiàn)冒號 后,會讀取該值,然后將該值放入特殊變量OPTARG中。這個命令比較復(fù)雜,如有需要,讀者可以詳細參閱Shell編寫的相關(guān)資料。

上面這個循環(huán)的作用就是依次取出腳本名稱后面的選項,進行處理,如果輸入了非法選項,則進入"?指定的部分,退出腳本程序。

第二個,Bash提供了一種用于交互式應(yīng)用的擴展select,用戶可以從一組不同的值中進行選擇。其語法如下:

select var in …; do
break;
done

例如,下面這段程序的輸出是:

#!/bin/bash
echo "Your choice?"
select var in "a" "b" "c"; do
break
done
echo $var
----------------------------
Your choice?
1) a
2) b
3) c

第三,Shell Script中也可以使用自定義的函數(shù),其語法形式如下:

functionname()
{
…
}

例如我們可以把上面第二個例子中第四到第十二行放入一個名為help函數(shù)體內(nèi),以后每次調(diào)用的時候直接寫help即可。函數(shù)中處理函數(shù)調(diào)用參數(shù)的方法是,直接用上面講過的$1、$2來分別表示第一、第二個參數(shù),用$*表示參數(shù)列表。

第四,我們也可以在Shell下調(diào)試Shell Script腳本,當然最簡單的方法就是用echo輸出查看變量取值了。Bash也提供了真正的調(diào)試方法,就是執(zhí)行腳本的時候用-x參數(shù)。

sh ?x filename.sh

這會執(zhí)行腳本并顯示腳本中所有變量的取值,也可以使用參數(shù)-n,它并不執(zhí)行腳本,只是返回所有的語法錯誤。

以上所述就是小編給大家介紹的Linux Shell 腳本編程入門教程的全部內(nèi)容,希望大家喜歡。

您可能感興趣的文章:
  • 一篇教會你寫90%的shell腳本(入門小結(jié))
  • linux shell(.sh)腳本編寫和運行入門
  • Shell腳本編程30分鐘入門(小結(jié))
  • 分享一個入門級可控多線程shell腳本代碼
  • Linux Shell腳本系列教程(一):Shell入門
  • linux Shell入門:掌握Linux,OS X,Unix的Shell環(huán)境
  • 3000字掃盲shell基礎(chǔ)知識(新手必備)

標簽:六盤水 百色 鎮(zhèn)江 滁州 丹東 優(yōu)質(zhì)小號 自貢 武漢

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Linux Shell 腳本編程入門教程》,本文關(guān)鍵詞  Linux,Shell,腳本,編程,入門教程,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux Shell 腳本編程入門教程》相關(guān)的同類信息!
  • 本頁收集關(guān)于Linux Shell 腳本編程入門教程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    在线播放第一页| 日韩天堂在线| 欧美一区二区三区人| 在线观看制服搞黄视频| 天堂中文字幕| 久久久久久五月天久久久久久久久| 亚洲精品国产手机| 久久久久久久久久久99999| 91免费看视频| eeuss性xxxxxx电影| 天天色综合天天| 精品成人久久| 日韩成人免费在线| 国产午夜在线播放| 欧美性三三影院| 亚洲精品高清视频在线观看| 99亚洲精品视频| 99九九99九九九99九他书对| 91精品久久久久久久蜜月| 成人av影院在线观看| 波多野结衣乳巨码无在线| aaaaaav| 在线看av的网址| 六月婷婷久久| 可以在线观看的黄色网址| 狠狠色丁香久久综合频道| 日本特黄在线观看| 国产成人精品白浆久久69| 久久夜色精品国产噜噜av小说| 日韩精品卡通动漫网站| 香港三级经典全部种子下载| 亚洲丁香久久久| 黄色免费福利视频| 日本黄色小网站| 亚洲线精品久久一区二区三区| 日本一区二区不卡视频| 韩国欧美亚洲国产| av小说在线播放| 欧美一区二区三区影院| 香蕉成人啪国产精品视频综合网| 成人亚洲视频| 亚洲丝袜啪啪| 91片黄在线观看| 91精品国产一区二区在线观看| 欧美在线免费看| 免费97视频在线精品国自产拍| 国产又粗又猛又爽又黄的| 欧美成人精品不卡视频在线观看| 91成人在线观看喷潮蘑菇| 一本色道综合久久欧美日韩精品| 欧美一级在线免费观看| yourporn在线观看视频| 午夜国产小视频| 一个色妞综合视频在线观看| 亚洲免费网址| 在线观看高清免费视频| 5566成人精品视频免费| 福利91精品一区二区三区| 日韩成人动漫| 国产亚洲精品久久久网站好莱| 91精品视频在线播放| 蜜桃视频中文字幕| 99久久99久久精品免费看蜜桃| 能直接看的av| av影片在线| 不卡一区二区中文字幕| 色av手机在线| 亚洲色图100p| 国产精品久久久久久中文字| 麻豆一区区三区四区产品精品蜜桃| 欧美成人在线直播| 国产美女精品视频免费播放软件| 国产亚洲精久久久久久无码77777| 欧美性猛交xxxx富婆弯腰| 一级国产黄色片| 欧美日韩亚洲一区| 久草视频在线播放| 在线观看国产视频| 久久久久亚洲av无码专区首jn| 色呦呦视频在线| 久久综合九色综合97婷婷| 手机福利在线| av免费在线一区| 在线国产福利| 自拍视频在线观看一区二区| 美女航空一级毛片在线播放| av电影一区| 日韩视频免费观看高清| 啊v视频在线一区二区三区| 黄页网址大全在线播放| 午夜亚洲福利在线老司机| 国产精品自拍区| 黄色片免费观看视频| 免费观看成年在线视频网站| 涩涩涩久久久成人精品| 欧美激情一区二区三区免费观看| 日韩欧美影院| jizz久久精品永久免费| 亚洲午夜精品一区二区三区| 18岁以下禁止观看的美女视频| 欧美一级艳片视频免费观看| 精品国语对白精品自拍视| 精品日韩一区| 男人的天堂亚洲| 91激情视频在线| 国产精品欧美一区二区| 开心九九激情九九欧美日韩精美视频电影| 五月婷婷六月婷婷| 国产专区一区二区三区| 欧美高清性猛交| 最近97中文超碰在线| 亚洲精品v天堂中文字幕| 男女毛片免费视频看| 亚洲伊人成综合成人网| 国产精品无av码在线观看| 中文字幕久久午夜不卡| 加勒比视频一区| 国产精品17p| 黄色成人91| 欧美精品与人动性物交免费看| 免费黄色在线看| 欧美一区二区三区婷婷| 亚洲黄色小说网| 中文字幕日本一区| 欧美精品一区二区三| 亚洲国产一区二区久久| 高清一区二区三区四区| 色香色香欲天天天影视综合网| 欧美精品videossex88| 极品盗摄国产盗摄合集| 激情偷乱视频一区二区三区| 欧美日韩综合网| 香蕉污视频在线观看| 国产日产欧美一区二区视频| av免费观看国产| 国产亚洲欧美日韩在线观看一区二区| 五月婷婷亚洲综合| 欧美天堂一区二区| 精品国产一区二区三区四区vr| 九七伦理97伦理| 国产精品极品美女在线观看免费| 97人妻精品一区二区三区软件| 国内自拍在线观看| 一区二区三区免费在线视频| 欧美日韩国产一区二区三区不卡| 人妻无码久久一区二区三区免费| 欧美成人禁片在线www| 日韩在线高清视频| 亚洲国产日韩成人综合天堂| 国产精品免费视频一区二区三区| 精品96久久久久久中文字幕无| 国内一区二区在线视频观看| 日韩黄色网址| 国产伦精品一区二区三毛| 久久白虎精品| 成人涩涩免费视频| 九九视频免费观看| 国产又粗又爽视频| 专区另类欧美日韩| 国产乱人伦精品一区| 免费欧美激情| 琪琪久久久久日韩精品| 久久免费视频网| 蜜臀国产一区二区三区在线播放| 美女av一区二区| 久久综合综合久久| 天堂在线第六区| 亚洲日本va午夜在线电影| 99久久99九九99九九九| 一个色的综合| 久久免费手机视频| 欧美富婆性猛交| 欧美孕妇孕交| 浮生影视网在线观看免费| 亚洲欧美综合图区| 国产精品久久久久久久电影| 国产一二三区av| 国产一在线精品一区在线观看| 一区二区三区四区免费视频| 亚洲成人资源在线| 国偷自拍第113页| xxxxxx国产| 日本夜爽爽一二区| 日本特黄a级片| 日韩经典一区| 丁香婷婷自拍| 蜜桃欧美视频| 成人性生生活性生交12| 夜夜爽99久久国产综合精品女不卡| 欧美日韩国产精品一区二区亚洲| 久久精品中文字幕免费mv| 国产一级片播放| 欧美精品第一页在线播放| 激情五月综合色婷婷一区二区| 久久精品一区| 看成年女人免费午夜视频| 国产精品国产精品国产专区不片| 久久91超碰青草是什么| 在线观看免费黄视频| 美女露出粉嫩尿囗让男人桶| 亚洲综合日韩在线| 精品成人私密视频| 日本美女一区| 国产呦小j女精品视频| 国产精品99一区二区三区| 精品97人妻无码中文永久在线| 日韩一级性生活片| 天天操天天操天天干| 国产福利一区二区三区视频在线| 男人的天堂一区二区| 中文官网资源新版中文第二页在线观看| 四虎视频在线精品免费网址| 青青在线视频| 国产午夜免费视频| 日韩欧美国产免费| 国产精品狼人久久影院观看方式| 精品久久久久久久久久久久久久久| jizz国产在线| 婷婷在线视频观看| 久久精品成人欧美大片免费| 亚洲大胆人体视频| 日韩久久电影| 黄色一级视频播放| 30一40一50老女人毛片| 久久久久国产一区二区| 一区二区三区四区在线看| 亚洲奶大毛多的老太婆| 国精产品一区一区| 成人在线手机视频| 欧美精三区欧美精三区| 亚洲人亚洲人成电影网站色| 亚洲精品国久久99热| 欧美一级理论性理论a| 在线观看国产三级| 日韩av网站在线观看| 国产日韩一区二区在线| 亚洲综合视频1区| 成年人av电影| 日韩一区二区精品| 自拍偷拍欧美视频| 丝袜美女写真福利视频| 精品国产va久久久久久久| 伊人久久久久久久久久久久久| 国产91av在线| 国产三级三级三级看三级| 精品免费一区二区三区| 美女视频一区二区三区在线| 丰满放荡岳乱妇91ww| 国产91丝袜在线播放| 又色又爽又高潮免费视频国产| 999国产精品999久久久久久| 性猛交富婆╳xxx乱大交一| 久久免费黄色| 91青青国产在线观看精品| 亚洲av无码一区二区二三区| 亚洲精品成人久久| 日本aa在线| 亚洲人成网站免费播放| 日本韩国精品在线| 一本一本久久a久久精品牛牛影视| 欧美日韩在线一区二区三区| 国产精品美女午夜av| 一级黄色免费视频| 天堂视频福利| 日韩欧美国产综合一区| 欧美色图首页| 91精品国产91热久久久做人人| 羞羞视频网站在线观看| 欧美tk丨vk视频| 青青草原av在线播放| 日韩福利视频在线观看| 天天综合天天添夜夜添狠狠添| 欧美成人xxxx| 亚洲小少妇裸体bbw| 东方欧美亚洲色图在线| 久久精品av麻豆的观看方式| 在线观看的黄色网址| 日韩av大全| 免费电影一区| 不卡视频免费播放| 国内久久久精品| 亚洲欧美在线观看| 在线国产电影不卡| 福利一区三区| 欧美日韩在线播放| 91电影在线观看| 天天看天天干| 激情亚洲成人| 三级4级全黄60分钟| 欧美日韩dvd| 国产麻豆综合| 91在线码无精品| gogo在线观看| 原千岁中文字幕| av高清在线| 久久精品亚洲欧美日韩精品中文字幕| 自拍偷拍福利视频| 性欧美高清视频| 不卡精品视频| 99精品在免费线偷拍| 久久精品色播| 日韩欧美aaaaaa| 免费看日产一区二区三区| 两个人免费视频观看日本| 欧美色欧美亚洲另类二区精品| 超薄肉色丝袜足j调教99| 国产精品久久777777毛茸茸| 男人天堂网av| 久久综合福利| 日韩欧美在线综合| 欧洲一区二区在线观看| 波多野结衣在线播放| 婷婷伊人综合| 久草这里只有精品视频| 制服诱惑一区二区| 色多多视频网站| 国产91在线观看| 国产在线欧美| 91欧美激情另类亚洲| 成人黄色大片在线观看| 91最新在线观看| 成人国产精品久久久久久亚洲| 成人中文字幕电影| 视频一区视频二区视频三区视频四区国产| 亚洲男人天堂2024| 黄黄视频在线观看| 九七电影院97理论片久久tvb| 精品伦精品一区二区三区视频|