<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 命令雜項 * eval命令 * wait命令 * trap命令 # eval命令 eval命令的格式eval command-line,其中command-line是終端上鍵入的一條普通命令,當前面放上eval時就會對Bash執行命令前進行兩次掃描,譬如以下案例。 ``` [root@blog.puppeter.com_centos ~]# pipe="|" [root@blog.puppeter.com_centos ~]# ls $pipe wc -l ls: -l: No such file or directory ls: wc: No such file or directory ls: |: No such file or directory ``` 錯誤來源于ls,Bash在變量替換前處理了I/O重定向,因此不能知道pipe變量中的管道符號,結果就給ls傳遞了3個參數。這時我們可以使用eval。 ``` [root@blog.puppeter.com_centos ~]# eval ls $pipe wc -l 16 ``` 當Bash第一次掃描命令時會替換出pipe中的\|,接著eval使它再次掃描命令時,這時Bash把\|作為管道符號。不過建議不要過多的使用eval命令會導致腳本性能比較差。 # wait 命令 wait是用來阻塞當前進程的執行,直至指定的子進程執行結束后,才繼續執行。使用wait可以在bash腳本“多進程”執行模式下,起到一些特殊控制的作用。 ``` #!/bin/bash sleep 10 & wait # 等待10秒后,退出 exit 0 ``` 如果wait后面不帶任何的進程號或作業號,那么wait會阻塞當前進程的執行,直至當前進程的所有子進程都執行結束后,才繼續執行。 # trap命令 我們在運行腳本時如果無意按到了鍵盤上的按鍵或希望退出腳本時直接按ctrl+c會馬上退出運行的程序,但是這里帶來的問題就是會產生很多臨時的數據問題。trap命令主要用來捕捉系統信號,當出現上述情況我們可以通過捕捉系統信號來做出相應的處理,譬如刪除臨時文件。 * 方式1,捕捉信號 * 方式2,無參數trap * 方式3,忽略trap trap捕捉信號有三種方式。 #### 方式1 trap "commands" signal-list 當腳本收到signal-list清單內列出的信號時,trap命令執行雙引號中的命令。 ``` #!/bin/bash trap 'rm -rf /var/log/mess.log' INT # 當捕捉到ctrl+c信號時,觸發刪除指定的文件 ``` 注:單引號和雙引號是不同的,當shell程序第一次碰到trap語句時,將把commands中的命令掃描一遍。此時若commands是用單引號括起來的話,那么shell不會對commands中的變量和命令進行替換, 否則commands中的變量和命令將用當時具體的值來替換。 #### 方式2 執行無參數的trap是顯示所有改過的陷阱。 ``` #!/bin/bash trap 'echo logged off ' 0 trap ``` #### 方案3 如果列出的命令為空 ,當收到信號時就會忽略它。 ``` #!/bin/bash trap '' 2 while : do : done ``` 我們可以通過kill命令或trap命令看到信號的列表和含義。以下以kill -l 為例大家還可以執行trap -l 最終的執行結果都是一樣的沒有太大區別。 ``` [root@blog.puppeter.com_centos ~]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE 9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG 17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD 21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGINFO 30) SIGUSR1 31) SIGUSR2 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看