• <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>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            shell命令執行順序

            Posted on 2009-03-26 11:26 Prayer 閱讀(497) 評論(0)  編輯 收藏 引用 所屬分類: Shell

            1.&&

             

            在一個普通的shell中,命令執行是沒有相互依賴的,比如

            cat my1.txt

            cat my2.txt

            大家可以試試,無論上面一個命令是否正確運行,下面的指令都會運行。但有時候我們需要前一個指令沒有成功執行時候,后一個指令就不要運行,這里就牽扯到&&。

            [root@liumengli my_shell]# ls
            1.sh  2.sh  case_shell.sh  crontab.txt  first.sh  for_shell.sh  hello  hello zhangchi  my.txt  shell_example.sh  test  until_shell.sh  while_shell.sh
            [root@liumengli my_shell]# cat 1.sh && cat 2.sh
            #!/bin/sh

            echo "hello yuna"

            exit 1
            #!/bin/sh

            echo "hello difa"
            exit 0
            [root@liumengli my_shell]# cat 3.sh && cat
            cat        catchsegv 
            [root@liumengli my_shell]# cat 3.sh && cat 2.sh
            cat: 3.sh: 沒有這個目錄
            從結果中可以看到cat 3.sh沒有成功運行,那么cat 2.sh就不會成功運行。自己寫的shell腳本也可以用&&鏈接起來

             

            這里又牽扯到一個問題,到底怎樣才算成功運行了呢。像上面那樣 cat 3.sh這個是明顯失敗了。但如果我有2個腳本,如何才算前一個腳本成功運行了呢?關鍵在于 exit,如果exit 0被執行了就表示前一個成功運行, exit 1就沒有成功運行,例如

            [root@liumengli my_shell]# cat 1.sh
            #!/bin/sh

            echo "hello yuna"

            exit 1
            [root@liumengli my_shell]# cat 2.sh
            #!/bin/sh

            echo "hello difa"
            exit 0
            [root@liumengli my_shell]# ./1.sh && ./2.sh
            hello yuna
            [root@liumengli my_shell]# ./2.sh && ./1.sh
            hello difa
            hello yuna
            [root@liumengli my_shell]#
            第一個只執行了1.sh,因為它返回1,雖然從實際意義上看來,我們 1.sh成功運行了,但2.sh還是不會被運行。

             

            2.||

             

            和&&正好相反,當第一個指令運行失敗時候,才運行第2個指令(當然也可以是腳本,和&&類似)。

             

            3.()和{}

             

            樣例

            [root@liumengli my_shell]# (./1.sh ; ./2.sh )
            hello yuna
            hello difa
            [root@liumengli my_shell]#

            這個表示這2個指令(其實是腳本)在一起運行,且都是在當前 shell中運行

            如果是{}的話(語法一樣,中間有;號,注意第一個要有空格,則指令不再當前 shell,而在這個shell的子shell下面運行

            欧美激情一区二区久久久| 久久久WWW成人免费毛片| 无码专区久久综合久中文字幕| 中文字幕亚洲综合久久菠萝蜜| 亚洲精品乱码久久久久久蜜桃不卡 | 国产三级精品久久| 99久久国产亚洲综合精品| 久久九九精品99国产精品| 国产午夜电影久久| 午夜精品久久久久久中宇| 久久99国产精一区二区三区| 色综合久久88色综合天天 | 国产精品久久国产精品99盘| 久久久久久亚洲精品影院| 久久99国产亚洲高清观看首页 | 精品多毛少妇人妻AV免费久久| 99久久国产宗和精品1上映| 精品久久久久久国产三级| 欧美va久久久噜噜噜久久| 欧美午夜A∨大片久久 | 久久久精品2019免费观看| 狠狠色丁香久久婷婷综合图片| 99久久精品久久久久久清纯| 国产成人精品免费久久久久| 国产精品乱码久久久久久软件| 精品久久久久久久久久中文字幕 | 热99RE久久精品这里都是精品免费| 久久精品国产亚洲麻豆| 久久狠狠高潮亚洲精品| 一本一本久久A久久综合精品 | 嫩草伊人久久精品少妇AV| 精品久久久久成人码免费动漫| 免费一级做a爰片久久毛片潮| 99久久精品免费国产大片| 97久久超碰国产精品旧版| 国内精品伊人久久久久av一坑 | 久久夜色精品国产噜噜麻豆| 久久99这里只有精品国产| 亚洲国产成人久久笫一页| 综合久久一区二区三区| 久久人做人爽一区二区三区 |