## 算術運算符
下表列出了常用的算術運算符,假定變量 a 為 10,變量 b 為 20:
| 運算符 | 說明 | 舉例 |
| --- | --- | --- |
| + | 加法 | `expr $a + $b` 結果為?30。 |
| \- | 減法 | `expr $a - $b` 結果為 -10。 |
| \* | 乘法 | `expr $a \\\* $b` 結果為 ?200。 |
| / | 除法 | `expr $b / $a` 結果為?2。 |
| % | 取余 | `expr $b % $a` 結果為?0。 |
| \= | 賦值 | a=$b 將把變量 b 的值賦給 a。 |
| \== | 相等。用于比較兩個數字,相同則返回 true。 | \[ $a == $b \] 返回?false。 |
| != | 不相等。用于比較兩個數字,不相同則返回 true。 | \[ $a != $b \] 返回 true。 |
**注意:**條件表達式要放在方括號之間,并且要有空格,例如:**\[$a==$b\]**是錯誤的,必須寫成**\[ $a == $b \]**。
## 關系運算符
關系運算符只支持數字,不支持字符串,除非字符串的值是數字。
下表列出了常用的關系運算符,假定變量 a 為 10,變量 b 為 20:
| 運算符 | 說明 | 舉例 |
| --- | --- | --- |
| \-eq | 檢測兩個數是否相等,相等返回 true。 | \[ $a -eq $b \] 返回?false。 |
| \-ne | 檢測兩個數是否不相等,不相等返回 true。 | \[ $a -ne $b \] 返回 true。 |
| \-gt | 檢測左邊的數是否大于右邊的,如果是,則返回 true。 | \[ $a -gt $b \] 返回 false。 |
| \-lt | 檢測左邊的數是否小于右邊的,如果是,則返回 true。 | \[ $a -lt $b \] 返回 true。 |
| \-ge | 檢測左邊的數是否大于等于右邊的,如果是,則返回 true。 | \[ $a -ge $b \] 返回 false。 |
| \-le | 檢測左邊的數是否小于等于右邊的,如果是,則返回 true。 | \[ $a -le $b \] 返回 true。 |
## 布爾運算符
下表列出了常用的布爾運算符,假定變量 a 為 10,變量 b 為 20:
| 運算符 | 說明 | 舉例 |
| --- | --- | --- |
| ! | 非運算,表達式為 true 則返回 false,否則返回 true。 | \[ ! false \] 返回 true。 |
| \-o | 或運算,有一個表達式為 true 則返回 true。 | \[ $a -lt 20 -o $b -gt 100 \] 返回?true。 |
| \-a | 與運算,兩個表達式都為 true 才返回 true。 | \[ $a -lt 20 -a $b -gt 100 \] 返回?false。 |
## 邏輯運算符
以下介紹 Shell 的邏輯運算符,假定變量 a 為 10,變量 b 為 20:
| 運算符 | 說明 | 舉例 |
| --- | --- | --- |
| && | 邏輯的 AND | \[\[ $a -lt 100 && $b -gt 100 \]\] 返回 false |
| \|\| | 邏輯的 OR | \[\[ $a -lt 100 || $b -gt 100 \]\] 返回 true |
## 字符串運算符
下表列出了常用的字符串運算符,假定變量 a 為 "abc",變量 b 為 "efg":
| 運算符 | 說明 | 舉例 |
| --- | --- | --- |
| \= | 檢測兩個字符串是否相等,相等返回 true。 | \[ $a = $b \] 返回 false。 |
| != | 檢測兩個字符串是否不相等,不相等返回 true。 | \[ $a != $b \] 返回?true。 |
| \-z | 檢測字符串長度是否為0,為0返回 true。 | \[ -z $a \] 返回 false。 |
| \-n | 檢測字符串長度是否不為 0,不為 0 返回 true。 | \[ -n "$a" \] 返回 true。 |
| $ | 檢測字符串是否為空,不為空返回 true。 | \[ $a \] 返回?true。 |
## 文件測試運算符
文件測試運算符用于檢測 Unix 文件的各種屬性。
屬性檢測描述如下:
| 操作符 | 說明 | 舉例 |
| --- | --- | --- |
| \-b file | 檢測文件是否是塊設備文件,如果是,則返回 true。 | \[ -b $file \] 返回 false。 |
| \-c file | 檢測文件是否是字符設備文件,如果是,則返回 true。 | \[ -c $file \] 返回?false。 |
| \-d file | 檢測文件是否是目錄,如果是,則返回 true。 | \[ -d $file \] 返回 false。 |
| \-f file | 檢測文件是否是普通文件(既不是目錄,也不是設備文件),如果是,則返回 true。 | \[ -f $file \] 返回?true。 |
| \-g file | 檢測文件是否設置了 SGID 位,如果是,則返回 true。 | \[ -g $file \] 返回?false。 |
| \-k file | 檢測文件是否設置了粘著位(Sticky Bit),如果是,則返回 true。 | \[ -k $file \] 返回?false。 |
| \-p file | 檢測文件是否是有名管道,如果是,則返回 true。 | \[ -p $file \] 返回?false。 |
| \-u file | 檢測文件是否設置了 SUID 位,如果是,則返回 true。 | \[ -u $file \] 返回?false。 |
| \-r file | 檢測文件是否可讀,如果是,則返回 true。 | \[ -r $file \] 返回?true。 |
| \-w file | 檢測文件是否可寫,如果是,則返回 true。 | \[ -w $file \] 返回?true。 |
| \-x file | 檢測文件是否可執行,如果是,則返回 true。 | \[ -x $file \] 返回?true。 |
| \-s file | 檢測文件是否為空(文件大小是否大于0),不為空返回 true。 | \[ -s $file \] 返回?true。 |
| \-e file | 檢測文件(包括目錄)是否存在,如果是,則返回 true。 | \[ -e $file \] 返回?true。 |
其他檢查符:
* **\-S**: 判斷某文件是否 socket。
* **\-L**: 檢測文件是否存在并且是一個符號鏈接。
- Linux
- linux常用命令
- awk
- cp
- scp
- mv
- screen工具
- rsync
- Linux設置靜態IP
- vim常用
- ssh免密登錄
- linux掛載磁盤和開機自動掛載
- 文件的時間戳
- 重定向
- 防火墻
- Vultr 服務器利用快照更換IP
- ss
- node-yarn
- ES安裝向導
- lnmp/lamp
- windows安裝mysql
- windows安裝nginx
- Let'sEncrypt 免費通配符/泛域名SSL證書
- 開機自動掛載硬盤
- 普通用戶提權
- ELK日志分析系統
- Docker
- docker
- centos7安裝docker
- Centos7安裝redis
- CentOS 7 使用Docker搭建Nginx
- CentOS 7 使用Docker搭建Jenkins
- CentOS 7 使用Docker搭建Zookeeper
- CentOS 7 使用Docker搭建Tomcat
- CentOS 7 使用Docker搭建Mysql
- CentOS 7 使用Docker搭建PHP環境
- 使用docker搭建Swagger
- docker阿里云私有倉庫
- docker zookeeper集群
- docker部署ES
- docker之java容器運行外置springboot-jar
- docker部署owncloud云盤
- ETCD
- centos7部署etcd節點
- Dockerfile
- Docker-compose
- gitlab.yml
- db.yml
- 安裝docker-compose
- gitlab-docker-compose.yml
- nginx-docker-compose.yml
- Mysql
- mysql開啟遠程訪問及相關權限控制
- mysql授權
- mysql快速導出導入大數據
- mysql單機備份
- binlog日志
- shell
- 經典案例
- 俄羅斯方塊游戲
- 系統初始化
- 服務器監控
- go基礎環境
- shell.監控日志.elk
- shell.檢查各服務腳本
- shell.刪除文件腳本
- shell.守護進程
- shell.數據庫
- shell.Ansible
- shell.dev
- shell.ftp環境
- shell.docker環境
- shell.k8s環境
- k8s.二進制安裝
- K8s.一主多從
- k8s.三主兩從高可用
- k8s.檢查服務與配置
- k8s.jenkins
- k8s.gitlab
- go-install.sh
- jenkins-install.sh
- node-install.sh
- redis-install.sh
- zabbix-install.sh
- zabbix-dockerfile.sh
- nginx-install.sh
- shell變量
- 用戶自定義變量
- 環境變量
- shell特殊變量
- shell條件判斷
- 流程控制
- shell運算符
- Shell _printf
- shell_test
- shell函數
- 輸出重定向
- 網絡相關
- 安全相關
- 堡壘機部署
- 區塊鏈威脅情報共享平臺
- 簽名與驗簽
- 淺談區塊鏈
- 智能合約
- 黃金幣GTF智能合約
- 節點
- 以太坊公鏈私鏈geth同步
- 比特節點同步
- BTC節點錯誤解決方法
- eth硬分叉
- omni錢包節點搭建
- 架構
- K8s
- 搭建k8s集群完整篇
- 二進制部署k8s
- Devops
- git
- Jenkins
- svn
- 禪道
- CI/CD
- docker+jenkins+golang持續集成持續交付(CI/CD)
- 項目部署
- config.env
- docker-compose.yml
- Dockerfile模板
- .dockerignore
- run.sh
- nginx.conf模板
- 跨域
- jenkins配置
- 測試
- Python