Bash 指令碼:`(反引號)運算子和 $()的使用方式
導讀 |
` 反引號運算子可以在
中使用,因為它很容易與其他
結合使用。但是,還有一種更“推薦”的方式來做同樣的事情,使用$()運算子。本文將介紹在 shell
中使用他們的優缺點。 |
反引號的使用方式
下面是一個簡單的例項:
[root@localhost ~]# echo "There are `ls | wc -l` files in this directory" There are 10 files in this directory
ls |wc -l
用於列出和計算當前目錄的檔案數,然後將它嵌入到 echo
中。
在 shell 指令碼中,當然可以執行相同的操作,將
ls | wc -l
命令的結果分配給一個變數,稍後使用該變數。
[root@localhost ~]# file_count=`ls | wc -l` [root@localhost ~]# echo "There are $file_count files in this directory" There are 10 files in this directory
$()的使用方式
也可以透過使用
$()
代替
`
反引號來獲得相同的結果,如下例所示:
[root@localhost ~]# echo "There are $(ls | wc -l) files in this directory" There are 10 files in this directory
下面是一個例子,我需要對網路連線中的某些問題進行故障排除,因此我決定每分鐘顯示總連線數和等待連線數。
[root@localhost ~]# vim netinfo.sh #!/bin/bash while true do ss -an > netinfo.txt connections_total=$(cat netinfo.txt | wc -l) connections_waiting=$(grep WAIT netinfo.txt | wc -l) printf "$(date +%R) - Total=%6d Waiting=%6d\n" $connections_total $connections_waiting sleep 60 done
執行一下指令碼:
[root@localhost ~]# ./netinfo.sh 17:13 - Total= 158 Waiting= 4 17:14 - Total= 162 Waiting= 0 17:15 - Total= 155 Waiting= 0 17:16 - Total= 155 Waiting= 0 17:17 - Total= 155 Waiting= 0
如何選擇使用哪種方式
這裡更推薦使用$()方式。下面是原因:
1. 如果內部命令也使用
`
,
`
運算子可能會變得混亂。
- 將需要轉義內部的
`
,如果將單引號作為命令的一部分或結果的一部分,閱讀和排除指令碼故障可能會變得困難。 - 如果開始考慮在其他
`
運算子中巢狀`
運算子,則事情將不會按預期工作或根本不起作用。
2.
$()
運算子更安全,更可預測。
在
$()
運算子中的內容被視為 shell 指令碼。從語法上講,這和把程式碼儲存在文字檔案中是一樣的。
以下是
`
和
$()
行為差異的一些示例:
[root@localhost ~]# echo '\$x' \$x [root@localhost ~]# echo `echo '\$x'` $x [root@localhost ~]# echo $(echo '\$x') \$x
總結
在較為複雜的命令語句中,推薦使用$()方式。
本文原創地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2785073/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux bash中的引號:單雙引號、反撇號Linux
- Bash基本運算子
- shell指令碼——基本運算子指令碼
- javascript中&&運算子和||運算子的使用JavaScript
- shell指令碼中的運算子和條件判斷指令碼
- bash shell指令碼接受多個引數指令碼
- Bash指令碼指令碼
- Golang的單引號、雙引號與反引號Golang
- shell和bash指令碼命令學習指令碼
- Python指令碼的常見引數獲取和處理方式Python指令碼
- 如何在 Bash 指令碼中使用單行和多行註釋指令碼
- 深入理解Java雙冒號(::)運算子的使用Java
- JavaScript == 等號運算子JavaScript
- JavaScript - 負號運算子JavaScript
- JavaScript + 正號運算子JavaScript
- JavaScript (+) 正號運算子JavaScript
- Bash Shell指令碼中的陣列使用例項指令碼陣列
- MySQL的四種運算子(算術運算子、比較運算子、邏輯運算子和位運算子)MySql
- 使用python指令碼傳遞引數:(三種方式可收藏)Python指令碼
- Bash 常用指令碼片段指令碼
- Bash指令碼debug攻略指令碼
- Bash 指令碼簡介指令碼
- 賦值運算子和+號的用法(兩個練習)賦值
- Bash 指令碼例項:獲取符號連結的目標位置指令碼符號
- [20210330]bash使用source or ..呼叫shell指令碼注意txt指令碼
- 使用 Bash 指令碼傳送包含幾天內到期的使用者賬號列表的電子郵件指令碼
- shell指令碼程式設計學習筆記-運算子指令碼程式設計筆記
- 批量修改檔名的bash指令碼指令碼
- 世界上最短的bash指令碼指令碼
- 指令碼前面的/bin/bash指令碼
- 《Bash 指令碼教程》釋出了指令碼
- bashdb除錯bash指令碼除錯指令碼
- 關於 isset 和邏輯運算子的使用
- JavaScript >> 有符號右移運算子JavaScript符號
- JavaScript 等號 = 賦值運算子JavaScript賦值
- 算術運算子++、--的使用
- 【C】 18_三目運算子和逗號表示式
- [20190419]bash單雙引號問題.txt