精品丰满熟女一区二区三区_五月天亚洲欧美综合网_亚洲青青青在线观看_国产一区二区精选

  • <menu id="29e66"></menu>

    <bdo id="29e66"><mark id="29e66"><legend id="29e66"></legend></mark></bdo>

  • <pre id="29e66"><tt id="29e66"><rt id="29e66"></rt></tt></pre>

      <label id="29e66"></label><address id="29e66"><mark id="29e66"><strike id="29e66"></strike></mark></address>
      學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 >

      shell中的各種括號(hào)的使用方法教程

      時(shí)間: 加城1195 分享

        Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。在shell中出現(xiàn)許多括號(hào),那么分別有什么作用呢?怎么使用?這篇文章主要介紹了shell中的各種括號(hào)的使用方法,需要的朋友可以參考下

        具體介紹

        在這里我想說(shuō)的是幾種shell里的小括號(hào),大括號(hào)結(jié)構(gòu)和有括號(hào)的變量,命令的用法,如下:

        1.${var}

        2.$(cmd)

        3.()和{}

        4.${var:-string},${var:+string},${var:=string},${var:?string}

        5.$((exp))

        6.$(var%pattern),$(var%%pattern),$(var#pattern),$(var##pattern)

        現(xiàn)在分述如下:

        1.Shell中變量的原形:${var}

        大家常見(jiàn)的變量形式都是$var,如

        $ var=test

        $ echo $var

        test

        但當(dāng)你要顯示變量值加隨意的字符(我這里用AA)時(shí),就會(huì)出錯(cuò),如下:

        $ echo $varAA

        $

        這時(shí)應(yīng)該用變量的原形:${var},即是加一個(gè)大括號(hào)來(lái)限定變量名稱的范圍,如下

        $ echo ${var}AA

        testAA

        $

        以這個(gè)特性,我們可以很方便地寫(xiě)一個(gè)批量改后綴名的程序,我把它命名為mymv,程序如下:

        #!/bin/bash

        tail=$1

        for filename in `ls`

        do

        mv $filename ${filename}.$tail

        done

        程序需要提供一個(gè)后綴名,如c,表示改為后綴為c的C程序文件,看下面的測(cè)試:

        $ ls

        a b c

        $ mymv c

        $ ls

        a.c b.c c.c

        $

        看樣子程序運(yùn)行的很好,但這是不完善的程序,有2個(gè)要注意的問(wèn)題:

        A,目錄下沒(méi)有子目錄,如果有一個(gè)目錄,假設(shè)為dir,則也會(huì)被改為dir.c,這顯然不是我們想要的,應(yīng)該修正這個(gè)程序能識(shí)別目錄。

        B,沒(méi)有幫助對(duì)程序的參數(shù)進(jìn)行處理,程序應(yīng)該足夠友好,在用戶沒(méi)有給定后綴名時(shí)應(yīng)能處理,像上面的將直接給文件加上了一個(gè)點(diǎn)(.),這顯然也不是我們想要的。

        因?yàn)槲覀兊哪康氖钦f(shuō)明${var},這樣已經(jīng)足夠了,因此這里不會(huì)再對(duì)上面的程序進(jìn)行修正。

        2.命令替換$(cmd)

        命令替換$(cmd)和符號(hào)`cmd`(注意這不是單引號(hào),在美式鍵盤(pán)上,`是ESC下面的那個(gè)鍵)有相同之處

        $ ls

        a b c

        $ echo $(ls)

        a b c

        $ echo `ls`

        a b c

        我們來(lái)分析一下命令echo $(ls),以便理解所謂命令替換是什么意思:

        shell掃描一遍命令行,發(fā)現(xiàn)了$(cmd)結(jié)構(gòu),便將$(cmd)中的cmd執(zhí)行一次,得到其標(biāo)準(zhǔn)輸出,再將此輸出放到原來(lái)命令echo $(ls)中的$(ls)位置,即替換了$(ls),再執(zhí)行echo命令。

        如下:

        echo $(ls)被替換成了echo a b c

        這里要注意的是$(cmd)中的命令的錯(cuò)誤輸出是不會(huì)被替換的,替換的只是標(biāo)準(zhǔn)輸出:

        $ var=$(cat d) ###文件d在當(dāng)前目錄不存在

        cat: d: 沒(méi)有那個(gè)文件或目錄

        $ echo $var

        $ ###顯然var變量的值是空的

        3、一串的命令執(zhí)行()和{}

        ()和{}都是對(duì)一串的命令進(jìn)行執(zhí)行,但有所區(qū)別:

        A,()只是對(duì)一串命令重新開(kāi)一個(gè)子shell進(jìn)行執(zhí)行

        B,{}對(duì)一串命令在當(dāng)前shell執(zhí)行

        C,()和{}都是把一串的命令放在括號(hào)里面,并且命令之間用;號(hào)隔開(kāi)

        D,()最后一個(gè)命令可以不用分號(hào)

        E,{}最后一個(gè)命令要用分號(hào)

        F,{}的第一個(gè)命令和左括號(hào)之間必須要有一個(gè)空格

        G,()里的各命令不必和括號(hào)有空格

        H,()和{}中括號(hào)里面的某個(gè)命令的重定向只影響該命令,但括號(hào)外的重定向則影響到括號(hào)里的所有命令

        我們來(lái)看幾個(gè)例子:

        $ var=test

        $ (var=notest; echo $var) ###變量var值為notest,此是在子shell中有效

        notest

        $ echo $var ###父shell中值仍為test

        test

        $ { var=notest; echo $var;} ###注意左括號(hào)和var之間要有一個(gè)空格

        notest

        $ echo $var ###父shell中的var變量的值變?yōu)榱薾otest

        notest

        $ { var1=test1;var2=test2;echo $var1>a;echo $var2;} ###輸出test1被重定向到文件a中,

        test2 ###而test2輸出則仍輸出到標(biāo)準(zhǔn)輸出中。

        $ cat a

        test1

        $ { var1=test1;var2=test2;echo $var1;echo $var2;}>a ###括號(hào)內(nèi)命令的標(biāo)準(zhǔn)輸出全部被重定向到文件a中

        $ cat a

        test1

        test2

        下面是一個(gè)腳步例子:

        (

        echo "1"

        echo "2"

        ) | awk '{print NR,$0}'

        4,幾種特殊的替換結(jié)構(gòu):${var:-string},${var:+string},${var:=string},${var:?string}

        A,${var:-string}和${var:=string}

        若變量var為空,則用在命令行中用string來(lái)替換${var:-string},否則變量var不為空時(shí),則用變量var的值來(lái)替換${var:-string}

        如:

        $ echo $newvar

        $ echo ${newvar:-a}

        a

        $ echo $newvar ###變量newvar的值仍然是空,但上一命令行中${newvar:-a}被替換成了a

        $ newvar=b

        $ echo ${newvar:-a} ###變量newvar的值不為空時(shí),此命令行中的${newvar:-b}被替換為$newvar,即b

        b

        $

        對(duì)于${var:=string}的替換規(guī)則和${var:-string}是一樣的,所不同之處是${var:=string}若var為空時(shí),用string替換${var:=string}的同時(shí),把string賦給變量var:

        $ echo $newvar

        $ echo ${newvar:=a}

        a

        $ echo $newvar ###變量newvar被賦值為a,同時(shí)${newvar:=a}被替換成a

        a

        $ echo ${newvar:=b} ###變量newvar不為空(其值已被賦為a),則${newvar:=b}被替換為newvar的值(即b)

        a

        $ echo $newvar

        a

        ${var:=string}很常用的一種用法是,判斷某個(gè)變量是否賦值,沒(méi)有的話則給它賦上一個(gè)默認(rèn)值。

        如設(shè)置默認(rèn)的編輯器:

        PHP 代碼:

        echo You use editor: ${EDITOR:=/bin/vi}

        B,${var:+string}

        ${var:+string}的替換規(guī)則和上面的相反,即只有當(dāng)var不是空的時(shí)候才替換成string,若var為空時(shí)則不替換或者說(shuō)是替換成變量 var的值,即空值。(因?yàn)樽兞縱ar此時(shí)為空,所以這兩種說(shuō)法是等價(jià)的)

        $ echo $newvar

        a

        $ echo ${newvar:+b}

        b

        $ echo $newvar

        a

        $ newvar=

        $ echo ${newvar:+b}

        $

        C,${var:?string}

        替換規(guī)則為:若變量var不為空,則用變量var的值來(lái)替換${var:?string};若變量var為空,則把string輸出到標(biāo)準(zhǔn)錯(cuò)誤中,并從腳本中退出。我們可利用此特性來(lái)檢查是否設(shè)置了變量的值。

        $ newvar=

        $ echo ${newvar:?沒(méi)有設(shè)置newvar的值}

        bash: newvar: 沒(méi)有設(shè)置newvar的值

        $ newvar=a

        $ echo ${newvar:?沒(méi)有設(shè)置newvar的值}

        a

        $

        補(bǔ)充擴(kuò)展:在上面這五種替換結(jié)構(gòu)中string不一定是常值的,可用另外一個(gè)變量的值或是一種命令的輸出。

        $ echo ${var:-`date`}

        日 3月 6 02:10:39 CST 2005

        $ echo ${var:-$(date)}

        日 3月 6 02:11:46 CST 2005

        $ a=test

        $ echo ${var:-$a}

        test

        $

        5.POSIX標(biāo)準(zhǔn)的擴(kuò)展計(jì)算:$((exp))

        這種計(jì)算是符合C語(yǔ)言的運(yùn)算符,也就是說(shuō)只要符合C的運(yùn)算符都可用在$((exp)),甚至是三目運(yùn)算符。

        注意:這種擴(kuò)展計(jì)算是整數(shù)型的計(jì)算,不支持浮點(diǎn)型.若是邏輯判斷,表達(dá)式exp為真則為1,假則為0。

        $ echo $((3+2))

        5

        $ echo $((3>2))

        1

        $ echo $((25<3 ? 2:3))

        3

        $ echo $var

        $ echo $((var=2+3))

        5

        $ echo $var

        5

        $ echo $((var++))

        5

        $ echo $var

        6

        $

        好了,上面的例子足夠了,這也表明了這種擴(kuò)展運(yùn)算是很強(qiáng)大的。

        補(bǔ)充:Linux基本命令

        1.ls命令:

        格式::ls [選項(xiàng)] [目錄或文件]

        功能:對(duì)于目錄,列出該目錄下的所有子目錄與文件;對(duì)于文件,列出文件名以及其他信息。

        常用選項(xiàng):

        -a :列出目錄下的所有文件,包括以 . 開(kāi)頭的隱含文件。

        -d :將目錄像文件一樣顯示,而不是顯示其他文件。

        -i :輸出文件的i節(jié)點(diǎn)的索引信息。

        -k :以k字節(jié)的形式表示文件的大小。

        -l :列出文件的詳細(xì)信息。

        -n :用數(shù)字的UID,GID代替名稱。

        -F : 在每個(gè)文件名后面附上一個(gè)字符以說(shuō)明該文件的類型,“*”表示可執(zhí)行的普通文 件;“/”表示目錄;“@”表示符號(hào)鏈接;“l”表示FIFOS;“=”表示套接字。

        2.cd命令

        格式:cd [目錄名稱]

        常用選項(xiàng):

        cd .. 返回上一級(jí)目錄。

        cd ../.. 將當(dāng)前目錄向上移動(dòng)兩級(jí)。

        cd - 返回最近訪問(wèn)目錄。

        3.pwd命令

        格式: pwd

        功能:顯示出當(dāng)前工作目錄的絕對(duì)路徑。

        相關(guān)閱讀:Linux主要特性

        完全兼容POSIX1.0標(biāo)準(zhǔn)

        這使得可以在Linux下通過(guò)相應(yīng)的模擬器運(yùn)行常見(jiàn)的DOS、Windows的程序。這為用戶從Windows轉(zhuǎn)到Linux奠定了基礎(chǔ)。許多用戶在考慮使用Linux時(shí),就想到以前在Windows下常見(jiàn)的程序是否能正常運(yùn)行,這一點(diǎn)就消除了他們的疑慮。

        多用戶、多任務(wù)

        Linux支持多用戶,各個(gè)用戶對(duì)于自己的文件設(shè)備有自己特殊的權(quán)利,保證了各用戶之間互不影響。多任務(wù)則是現(xiàn)在電腦最主要的一個(gè)特點(diǎn),Linux可以使多個(gè)程序同時(shí)并獨(dú)立地運(yùn)行。

        良好的界面

        Linux同時(shí)具有字符界面和圖形界面。在字符界面用戶可以通過(guò)鍵盤(pán)輸入相應(yīng)的指令來(lái)進(jìn)行操作。它同時(shí)也提供了類似Windows圖形界面的X-Window系統(tǒng),用戶可以使用鼠標(biāo)對(duì)其進(jìn)行操作。在X-Window環(huán)境中就和在Windows中相似,可以說(shuō)是一個(gè)Linux版的Windows。

        支持多種平臺(tái)

        Linux可以運(yùn)行在多種硬件平臺(tái)上,如具有x86、680x0、SPARC、Alpha等處理器的平臺(tái)。此外Linux還是一種嵌入式操作系統(tǒng),可以運(yùn)行在掌上電腦、機(jī)頂盒或游戲機(jī)上。2001年1月份發(fā)布的Linux 2.4版內(nèi)核已經(jīng)能夠完全支持Intel 64位芯片架構(gòu)。同時(shí)Linux也支持多處理器技術(shù)。多個(gè)處理器同時(shí)工作,使系統(tǒng)性能大大提高。


      Linux shell中的各種括號(hào)的使用方法相關(guān)文章:

      1.linux shell腳本執(zhí)行命令

      2.linux shell暫停命令

      3.linux shell cd命令

      4.Linux Shell中的特殊符號(hào)和含義是什么

      5.linux shell wait命令

      4019401