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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 1. 調用系統命令符號 \`\` 與 $\(\) 在Bash中\`\`和$\(\)都是用來執行系統命令的符號。 #!/bin/bash mem=`free -m` # ``方式 disk=$(df -h) # $()方式 echo $mem echo $disk 在Bash中兩個符號各有優缺點還要看用戶的應用場景: * \`\` 基本上可用在全部的Shell版本中使用其移植性比較高,但反單引號容易打錯或看錯。 * $\(\) 并不是所有Shell都支持。 ## 2. \轉義與\續行 在Bash中“\”有兩種含義分別為轉義和換行。 * 轉義,將Linux中的一些特殊符號轉為本身含義。譬如在屏幕上打印command=\`ls\`,案例如下 #!/bin/bash string="command=`ls`" # 打印出ls執行后的結果 string=command=\`ls\` # 轉義后的效果。 * 續行,通常用于Linux參數太長進行續行。以下案例為源碼編譯安裝Nginx,因為一行裝不下所有的參數,通常通過“\”進行續行 ``` ./configure --sbin-path=/usr/local/nginx/nginx \ --conf-path=/usr/local/nginx/nginx.conf \ --pid-path=/usr/local/nginx/nginx.pid \ --with-http_ssl_module \ --with-pcre=/usr/local/src/pcre-8.21 \ --with-zlib=/usr/local/src/zlib-1.2.8 \ --with-openssl=/usr/local/src/openssl-1.0.1c ``` ## 3.單引號與雙引號 在Bash環境下單引號和雙引號是有區別的,這很像PHP語言。 * 雙引號,解析雙引號內部的特殊符號 * 單引號,不解析單引號內部的內容 ``` #!/bin/bash echo "hello\tworld" # 雙引號,打印結果為hello world ,雙引號會解析內部的特殊符號。 echo 'hello\tworld' # 單引號,打印結果為hello\tworld,不轉義\t特殊符號 ``` 如果雙引號中有多個特殊符號,我只想部分不轉義怎么辦?譬如以下案例不轉義\n,可以在雙引號中使用"\"不轉義。 ``` #!/bin/bash echo "hello\tworld\\n" # 最終打印結果為hello world\n ``` ## 4.小括號\(\)與大括號{} \(\)和{}都是對一串的命令進行執行,但有所區別: * \(\)只是對一串命令重新開一個子Bash進行執行 * {}對一串命令在當前Bash執行, 案例1,在Bash中通過{}把一組命令放在一起執行,不過這里有兩種方式在大括號中執行命令,分別用“,”和“..”作為命令的分割符。譬如我要創建a.txt、b.txt和c.txt文本文件。 ``` [root@blog.puppeter.com_centos ~]# touch {a,b,c}.txt # 用,進行分割方式 [root@blog.puppeter.com_centos ~]# touch {a..c}.txt # 用..進行分割方式 [root@blog.puppeter.com_centos ~]# touch {ex{1..3},ex4} # ,和..兩種方式 ``` 案例2,在Bash通過\(\)以子Shell進程方式來執行命令組。 ``` [root@blog.puppeter.com_centos ~]# (ls && touch {a..f} && ls ) # 將多個命令放到()中,用子Shell方式運行。 && 表示前一個命令執行成功的情況下再執行后一個命令 ``` ## 5.大括號${} ${}可以存放變量與"$"符號的變量相比,他主要用于避免變量的混淆,譬如以下案例。 ### 通過${}避免變量混淆 ``` #!/bin/bash string="hello" echo $string_aaa # 不加${}情況,輸出為空 echo ${string}_aaa # 加${}情況,輸出為hello_aaa ``` ### 變量內部匹配 大括號${ } 還有一些其他的功能,假設我們定義了一個變量為file=/dir1/dir2/dir3/my.file.txt我們可以用 ${ } 分別替換獲得不同的值: ${file\#_/}:拿掉第一條 / 及其左邊的字符串:dir1/dir2/dir3/my.file.txt ${file\#\#_/}:拿掉最后一條 / 及其左邊的字符串:my.file.txt ${file\#_.}:拿掉第一個 . 及其左邊的字符串:file.txt ${file\#\#_.}:拿掉最后一個 . 及其左邊的字符串:txt ${file%/_}:拿掉最后條 / 及其右邊的字符串:/dir1/dir2/dir3 ${file%%/_}:拿掉第一條 / 及其右邊的字符串:\(空值\) ${file%._}:拿掉最后一個 . 及其右邊的字符串:/dir1/dir2/dir3/my.file ${file%%._}:拿掉第一個 . 及其右邊的字符串:/dir1/dir2/dir3/my ${file:0:5}:提取最左邊的 5 個字節:/dir1 ${file:5:5}:提取第 5 個字節右邊的連續 5 個字節:/dir2 ### 變量參數替換 大括號${}變量的參數替換。 | 命令 | 解釋 | 備注 | | :--- | :--- | :--- | | ${file-my.file.txt} | 若 $file 沒設定,則使用 my.file.txt 作傳回值 | 空值及非空值不作處理 | | ${file:-my.file.txt} | 若 $file 沒有設定或為空值,則使用 my.file.txt 作傳回值 | 非空值時不作處理 | | ${file+my.file.txt} | 若$file 設為空值或非空值,均使用my.file.txt作傳回值 | 沒設定時不作處理 | | ${file:+my.file.txt} | 若 $file 為非空值,則使用 my.file.txt 作傳回值 | 沒設定及空值不作處理 | | ${file=txt} | 若 $file 沒設定,則回傳 txt ,并將 $file 賦值為 txt | 空值及非空值不作處理 | | ${file:=txt} | 若 $file 沒設定或空值,則回傳 txt ,將 $file 賦值為txt | 非空值時不作處理 | | ${file?my.file.txt} | 若 $file 沒設定,則將 my.file.txt 輸出至 STDERR | 空值及非空值不作處理 | | ${file:?my.file.txt} | 若 $file沒設定或空值,則將my.file.txt輸出至STDERR | 非空值時不作處理 |
                  <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>

                              哎呀哎呀视频在线观看