青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

興海北路

---男兒仗劍自橫行
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

統(tǒng)計(jì)

  • 隨筆 - 85
  • 文章 - 0
  • 評(píng)論 - 17
  • 引用 - 0

常用鏈接

留言簿(6)

隨筆分類

隨筆檔案

收藏夾

全是知識(shí)啊

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

linux shell編程學(xué)習(xí)筆記
作者: falcon   發(fā)表日期: 2006-04-03 18:32   復(fù)制鏈接



這里只是我自己的個(gè)人學(xué)習(xí)筆記哦,要是想系統(tǒng)的學(xué)shell,應(yīng)該找一些比較系統(tǒng)的資料
這里有一篇好的:http://www.chinaunix.net/jh/24/628472.html

shell概述、Shell變量、位置參數(shù)、特殊符號(hào)、別名、各種控制語句、函數(shù)等Shell編程知識(shí)

執(zhí)行Shell腳本的方式

1)輸入重定向到bash: bash <exl
可以讀入exl中的程序,并執(zhí)行
2)以腳本名作為參數(shù)
其一般形式是:
$ bash 腳本名 [參數(shù)]
例如:
$ bash ex2   /usr/meng   /usr/zhang
其執(zhí)行過程與上一種方式一樣,但這種方式的好處是能在腳本名后面帶有參數(shù),從而將參數(shù)值傳遞給程序中的命令,使一個(gè)Shell腳本可以處理多種情況,就如同函數(shù)調(diào)用時(shí)可根據(jù)具體問題給定相應(yīng)的實(shí)參。
如果以目前Shell(以·表示)執(zhí)行一個(gè)Shell腳本,則可以使用如下簡便形式:
$ · 腳本名 [參數(shù)]
以Shell腳本作為Shell的命令行參數(shù),這種方式可用來進(jìn)行程序調(diào)試。
3)將Shell腳本的權(quán)限設(shè)置為可執(zhí)行,然后在提示符下直接執(zhí)行它。
具體辦法:chmod 777 腳本名

Shell的執(zhí)行原理
Shell 接收用戶輸入的命令(腳本名),并進(jìn)行分析。如果文件被標(biāo)記為可執(zhí)行的,但不是被編譯過的程序,Shell就認(rèn)為它是一個(gè)Shell腳本。Shell將讀 取其中的內(nèi)容,并加以解釋執(zhí)行。所以,從用戶的觀點(diǎn)看,執(zhí)行Shell腳本的方式與執(zhí)行一般的可執(zhí)行文件的方式相似。
因此,用戶開發(fā)的Shell腳本可以駐留在命令搜索路徑的目錄之下(通常是“/bin”、 “/usr/bin”等),像普通命令一樣使用。這樣,也就開發(fā)出自己的新命令。如果打算反復(fù)使用編好的Shell腳本,那么采用這種方式就比較方便。


變量賦值

可以將一個(gè)命令的執(zhí)行結(jié)果賦值給變量。有兩種形式的命令替換:一種是使用倒引號(hào)引用命令,其一般形式是: `命令表`。
例如:將當(dāng)前工作目錄的全路徑名存放到變量dir中,輸入以下命令行:
$ dir=`pwd`
另一種形式是:$(命令表)。上面的命令行也可以改寫為:
$ dir=$(pwd)


數(shù)組

bash只提供一維數(shù)組,并且沒有限定數(shù)組的大小。類似與C語言,數(shù)組元素的下標(biāo)由0開始編號(hào)。獲取數(shù)組中的元素要利用下標(biāo)。下標(biāo)可以是整數(shù)或算術(shù)表達(dá)式,其值應(yīng)大于或等于0。用戶可以使用賦值語句對(duì)數(shù)組變量賦值。對(duì)數(shù)組元素賦值的一般形式是:數(shù)組名[下標(biāo)]=值例如:
$ city[0]=Beijing
$ city[1]=Shanghai
$ city[2]=Tianjin
$
也可以用declare命令顯式聲明一個(gè)數(shù)組,一般形式是:
declare -a 數(shù)組名
讀取數(shù)組元素值的一般格式是:
${數(shù)組名[下標(biāo)]}
例如:
$ echo ${city[0]}
Beijing
一個(gè)數(shù)組的各個(gè)元素可以利用上述方式一個(gè)元素一個(gè)元素地賦值,也可以組合賦值。定義一個(gè)數(shù)組并為其賦初值的一般形式是:
數(shù)組名=(值1 值2 ... 值n)
其中,各個(gè)值之間以空格分開。
例如:
$ A=(this is an example of shell script)
$ echo ${A[0]} ${A[2]} ${A[3]} ${A[6]}
this an example script
$ echo ${A[8]}
$
由于值表中初值共有7個(gè),所以A的元素個(gè)數(shù)也是7。A[8]超出了已賦值的數(shù)組A的范圍,就認(rèn)為它是一個(gè)新元素,由于預(yù)先沒有賦值,所以它的值是空串。
若沒有給出數(shù)組元素的下標(biāo),則數(shù)組名表示下標(biāo)為0的數(shù)組元素,如city就等價(jià)于city[0]。
使用*或@做下標(biāo),則會(huì)以數(shù)組中所有元素取代 或[@]。

2006.8.19
最近在寫一個(gè)拆分字符串的代碼的時(shí)候用到了數(shù)組,我把實(shí)例寫一下
問題大概是這個(gè)樣子:我需要把一個(gè)存放有ip段的字符分開,分成開始地址和結(jié)束地址。
下面是解決辦法


Code:

[Ctrl+A Select All]




參數(shù)傳遞

假如我要編寫一個(gè)shell來求兩個(gè)數(shù)的和,可以怎么實(shí)現(xiàn)呢?
為了介紹參數(shù)傳遞的使用
我們用vi add編寫一個(gè)這樣的腳本:

let sum=$1+$2
echo $sum

保存后,我們執(zhí)行一下:
#./add 5 10
15

可以看出5和10分別傳給了$1和$2
其實(shí)這是shell自己某人的參數(shù)順序,其實(shí)我們可以自己先定義好變量,然后傳遞進(jìn)去

例如:
我們先修改上面的add文件:

let sum=$X+$Y
echo $sum

現(xiàn)在我們,這樣執(zhí)行
#X=5 Y=10 ./add
15

我們同樣可以得到正確結(jié)果哦

設(shè)置環(huán)境變量

將shell程序的變量輸出到環(huán)境變量export

#opid=True
#export=opid

這樣子就可以拉
不過還可以直接到/etc/profile里頭去添加哦
具體操作類似
在里頭的export命令之前先增加
opid=True
然后在export命令后面增加opid項(xiàng)

鍵盤讀起變量值

我們可以通過read來讀取變量值哦
下面我們來等待用戶輸入一個(gè)值并且顯示出來

Quote:

falcon@falcon:~$ read -p "請(qǐng)輸入一個(gè)值 : "  input ; echo "你輸入了一個(gè)值為 :" $input
請(qǐng)輸入一個(gè)值 : 21500
你輸入了一個(gè)值為 : 21500



設(shè)置變量的只讀屬性

有些重要的shell變量,賦值后不應(yīng)該修改,那么我們可設(shè)置他為readonly
具體操作:
#oracle_home=/usr/oracle7/bin
#readonly oracle_home

條件測試命令test
語法:test 表達(dá)式
如果表達(dá)式為真,則返回真,否則,返回假

1)數(shù)值比較
先給出數(shù)值比較時(shí)常見的比較符:
-eg   =
-ne   !=
-gt >
-ge >=
-lt <
-le <=

#test var1 -gt var2

2)文件屬性
文件的可讀、可寫、可執(zhí)行,是否為普通文件,是否為目錄分別對(duì)應(yīng)
    -r   -w   -x     -f         -d

#test -r filename

3)字符傳屬性以及比較

串的長度為零:-z 非零:-n

如:
#test -z s1  
如果串s1長度為零,返回真

串比較:相等s1=s2 不相等 s1!=s2
我們還有一種比較串的方法(可以按字典序來比較哦):

Quote:

falcon@falcon:~$ if [[ 'abcde' <'abcdf' ]]; then  echo "yeah,果然是誒"; fi
yeah,果然是誒


整數(shù)算術(shù)或關(guān)系運(yùn)算expr
可用該命令進(jìn)行的運(yùn)算有
算術(shù)運(yùn)算:+ - * / %
邏輯運(yùn)算:= ! < <= > >=

如:
#i=5;expr $i+5

另外,bc是linux下的一個(gè)計(jì)算器,可以進(jìn)行一些算術(shù)計(jì)算

控制執(zhí)行流程命令

(1)條件分支命令if ,case

if命令舉例:

下面的shell作用:判斷輸入的第一個(gè)參數(shù)的值是一個(gè)普通文件名,那么分頁打印該文件;否則,判斷它是否為目錄名,若是則進(jìn)入該目錄并打印該目錄下的所有文件,如果也不是目錄名,那么提示相關(guān)信息。

if test -f $1
then
              pr $1>/dev/lp0
elif
              test-d $1
then
              (cd $1;pr *>/dev/lp0)
else
                echo $1 is neither a file nor a directory
fi

case命令舉例:

case命令是一個(gè)基于模式匹配的多路分之命令
下面的shell將根據(jù)用戶鍵盤輸入情況決定下一步將執(zhí)行那一組命令。

while [ $reply!="y" ] && [ $reply!="Y" ]                         #下面將學(xué)習(xí)的循環(huán)語句
do
        echo "\nAre you want to continue?(Y/N)\c"
        read reply             #讀取鍵盤
        case $replay in
              (y|Y) break;;         #退出循環(huán)
              (n|N) echo "\n\nTerminating\n"
                      exit 0;;
                    *) echo "\n\nPlease answer y or n"
                        continue;       #直接返回內(nèi)層循環(huán)開始出繼續(xù)
        esac
done

(2)循環(huán)語句

條件循環(huán)語句while,until
語法:
while/until 命令表1
do
      命令表2
done

區(qū)別是,前者在執(zhí)行完命令表1后,如果出口狀態(tài)為零,那么執(zhí)行do后面的命令表2,然后回到起始處,而后者執(zhí)行命令表1后,如果出口狀態(tài)非零,才執(zhí)行類似操作。
[例子同上]

有限循環(huán)命令for
語法:
for 變量名 in 字符串表
do
    命令表
done
舉例:
FILE="test1.c myfile1.f pccn.h"
for i in $FILE
do
      cd ./tmp
      cp $i $i.old
      echo "$i copied"
done


函數(shù)

先在我們來看看shell里頭的函數(shù)怎么用

先看個(gè)例子:我們些一個(gè)函數(shù),然后調(diào)用它顯示"Hello,World!"
#函數(shù)定義
function show
{
    echo $1$2;
}
H="Hello,"
W="World!"
show $H $W

保存為show
修改執(zhí)行權(quán)限chmod 770 show
執(zhí)行:
$./show
Hello,World!

呵呵,看出什么蹊蹺了嗎?
show $H $W
我們可以通過直接在函數(shù)明后面跟實(shí)參哦
實(shí)參順序?qū)?yīng)“虛參”的$1,$2,$3..........

注意一個(gè)地方哦,假如我要傳進(jìn)去一個(gè)參數(shù),這個(gè)參數(shù)中間帶空格,怎么辦呢?
你先試試看

我們來顯示"Hello World"(兩個(gè)單詞之間有個(gè)空格哦)

function show
{
echo $1
}
HW="Hello World"
show "$HW"

看看,是不是ok拉,如果你 直接show $HW
肯定是不行的,因?yàn)?1只接受到了Hello,所以結(jié)果之顯示Hello
原因是字符串變量必須用"包含起來

感興趣的你繼續(xù)學(xué)習(xí)哦!
還有好多強(qiáng)大的東西值得你去學(xué)習(xí)呢,呵呵,比如cut, expr, sed, awk等等。

posted on 2008-03-14 15:56 隨意門 閱讀(658) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产亚洲一区在线播放| 亚洲伦伦在线| 亚洲在线1234| 久久综合九色综合欧美狠狠| 亚洲欧洲日本专区| 在线观看视频日韩| 91久久精品视频| 亚洲国产高清一区| 欧美一区二区三区喷汁尤物| 亚洲精品久久7777| 亚洲免费不卡| 久久爱www| 伊人久久婷婷色综合98网| 韩国av一区二区| 亚洲国产欧美在线人成| 99re这里只有精品6| 亚洲在线视频一区| 狼人天天伊人久久| 最新日韩精品| 久久精品二区三区| 蜜桃av一区二区| 国产精品高潮久久| 激情久久婷婷| 老巨人导航500精品| 欧美伊人久久久久久久久影院| 久久久久一区| 亚洲人线精品午夜| 久久在线免费| 国产视频一区在线| 亚洲欧美激情四射在线日 | 欧美激情免费观看| 国产欧美精品在线播放| 亚洲国产欧美另类丝袜| 久久久久久伊人| 午夜精品久久久久久久久久久久| 久久综合电影一区| 国产综合久久久久影院| 欧美77777| 国产欧美日韩综合一区在线播放| 亚洲国产三级网| 亚洲第一主播视频| 久久久久久国产精品mv| 99精品久久久| 久久婷婷国产综合尤物精品| 亚洲一级在线观看| 国产精品免费一区豆花| 亚洲欧美一区二区原创| 中日韩男男gay无套| 亚洲电影免费观看高清完整版| 久久这里有精品视频| 免费在线观看精品| 久久久久久日产精品| 久久精品九九| 国产一区二区三区精品欧美日韩一区二区三区 | 午夜日韩激情| 久久精品av麻豆的观看方式| 国产一区二区三区久久悠悠色av| 久久久成人网| 国产精品高潮呻吟久久av无限 | 亚洲一区二区三区在线视频| 欧美日韩大片一区二区三区| 亚洲综合日韩在线| 欧美一区精品| 欧美大片在线看| 亚洲在线观看视频| 欧美电影免费观看| avtt综合网| 久久人体大胆视频| 午夜日韩电影| 欧美日韩国产黄| 欧美成人乱码一区二区三区| 欧美视频中文字幕| 99国产精品久久久久久久久久| 国产视频一区在线| 欧美国产日韩一二三区| 久久精品亚洲热| 国产精品伦一区| 亚洲欧美日韩一区| 欧美一区二区三区成人| 欧美视频二区| 欧美激情一区二区三级高清视频 | 亚洲欧美高清| 久久久久久久久一区二区| 一区二区三区国产精品| 国产精品日韩在线一区| 狂野欧美激情性xxxx| 翔田千里一区二区| 99精品欧美一区| 亚洲国产mv| 免费在线观看成人av| 午夜在线视频一区二区区别| 国产一区二区久久| 久久综合久久久久88| 韩国福利一区| 欧美亚洲综合在线| 久久一区二区三区超碰国产精品| 好吊色欧美一区二区三区四区 | 久久久99精品免费观看不卡| 久久尤物视频| 亚洲欧美福利一区二区| 亚洲靠逼com| 国内精品久久久久久久97牛牛| 免费在线欧美黄色| 在线一区免费观看| 亚洲国产专区校园欧美| 午夜精品久久久久久久久| 亚洲伦理在线观看| 国模私拍一区二区三区| 国产精品xxxav免费视频| 裸体女人亚洲精品一区| 欧美一区二区视频97| 日韩一级黄色片| 欧美激情按摩在线| 老鸭窝91久久精品色噜噜导演| 欧美中文字幕在线观看| 久久久久**毛片大全| 久久视频在线免费观看| 一本色道久久| 亚洲久久视频| 国内免费精品永久在线视频| 国产一区二区在线观看免费播放| 欧美日韩三级| 欧美破处大片在线视频| 欧美日韩国产首页| 欧美日韩在线视频首页| 欧美日韩亚洲激情| 国产欧美不卡| 日韩视频专区| 麻豆成人精品| 亚洲精选一区| 久久成人人人人精品欧| 午夜在线视频一区二区区别| 欧美日韩亚洲不卡| 亚洲风情在线资源站| 久久久久久久久一区二区| 91久久综合| 欧美精品一区二| 亚洲天天影视| 亚洲欧美不卡| 极品av少妇一区二区| 欧美成人一区二免费视频软件| 亚洲激情影院| 欧美一区激情| 亚洲欧美国产视频| 91久久国产综合久久| 一二三区精品福利视频| 激情文学一区| 亚洲自拍偷拍麻豆| 亚洲精品一区二区三区樱花| 亚洲欧美国产77777| 国产综合香蕉五月婷在线| 久久综合伊人| 欧美日韩一二区| 久久精品国产v日韩v亚洲 | 亚洲网站啪啪| 黄色亚洲大片免费在线观看| 久久亚洲国产精品一区二区| 欧美精品www在线观看| 香蕉成人啪国产精品视频综合网| 亚洲一卡二卡三卡四卡五卡| 国产日韩精品一区二区浪潮av| 久久精品导航| 欧美日韩系列| 母乳一区在线观看| 国产精品久久久久久久久婷婷 | 免费观看成人| 亚洲一区亚洲| 欧美日韩国产在线| 亚洲成人在线视频播放| 激情欧美一区二区三区在线观看 | 99国产精品国产精品久久| 国产日韩欧美精品| 香蕉成人啪国产精品视频综合网| 久久婷婷久久| 亚洲在线视频观看| 欧美激情在线有限公司| 欧美成人国产va精品日本一级| 国产一区二区三区四区三区四| 亚洲午夜在线| 欧美一区亚洲二区| 国产欧美一区二区三区在线老狼 | 欧美亚洲一区二区三区| 欧美精品尤物在线| 亚洲精品久久视频| 亚洲精品国产精品乱码不99| 久久久噜噜噜久久中文字幕色伊伊| 久久成人人人人精品欧| 国产综合久久| 欧美日韩国产一中文字不卡| 日韩午夜视频在线观看| 亚洲性夜色噜噜噜7777| 国产精品毛片高清在线完整版| 亚洲在线观看视频网站| 欧美专区日韩专区| 亚洲经典视频在线观看| 国产精品高潮呻吟视频| 亚洲欧美日本视频在线观看| 午夜精品久久久久久久久久久| 韩国av一区二区三区四区| 欧美日韩国产美女|