語法符號表
部分內容由 LLM 生成,尚未經過人工驗證。
Shell Script 中使用的常見符號及其含義快速參考。
運算符號
算術運算
| 符號 | 說明 | 示例 |
|---|---|---|
+ | 加法 | $((5 + 3)) → 8 |
- | 減法 | $((10 - 4)) → 6 |
* | 乘法 | $((3 * 4)) → 12 |
/ | 除法 | $((10 / 2)) → 5 |
% | 取餘數 | $((10 % 3)) → 1 |
** | 次方 | $((2 ** 3)) → 8 |
比較運算(數值)
| 符號 | 說明 | 示例 |
|---|---|---|
-eq | 等於 (equal) | [[ $a -eq $b ]] |
-ne | 不等於 (not equal) | [[ $a -ne $b ]] |
-gt | 大於 (greater than) | [[ $a -gt $b ]] |
-lt | 小於 (less than) | [[ $a -lt $b ]] |
-ge | 大於等於 | [[ $a -ge $b ]] |
-le | 小於等於 | [[ $a -le $b ]] |
比較運算(字串)
| 符號 | 說明 | 示例 |
|---|---|---|
= 或 == | 字串相等 | [[ "$a" == "$b" ]] |
!= | 字串不相等 | [[ "$a" != "$b" ]] |
< | 字典順序小於 | [[ "$a" < "$b" ]] |
> | 字典順序大於 | [[ "$a" > "$b" ]] |
-z | 字串為空 | [[ -z "$str" ]] |
-n | 字串非空 | [[ -n "$str" ]] |
邏輯運算
| 符號 | 說明 | 示例 |
|---|---|---|
&& | 邏輯 AND | [[ $a -gt 0 && $b -lt 10 ]] |
|| | 邏輯 OR | [[ $a -eq 0 || $b -eq 0 ]] |
! | 邏輯 NOT | [[ ! -f file.txt ]] |
重定向與管道
輸入輸出重定向
| 符號 | 說明 | 示例 |
|---|---|---|
> | 輸出重定向(覆寫) | echo "text" > file.txt |
>> | 輸出重定向(附加) | echo "text" >> file.txt |
< | 輸入重定向 | command < input.txt |
2> | 錯誤輸出重定向 | command 2> error.log |
2>&1 | 錯誤輸出合併到標準輸出 | command > all.log 2>&1 |
&> | 標準輸出與錯誤輸出重定向 | command &> all.log |
<< EOF | Here Document | cat << EOF |
<<< "text" | Here String | grep "pattern" <<< "$text" |
管道
| 符號 | 說明 | 示例 |
|---|---|---|
| | 管道(連接命令) | ls | grep ".txt" |
|& | 管道(包含錯誤輸出) | command |& tee output.log |
特殊變數與引號
特殊變數
| 符號 | 說明 | 示例 |
|---|---|---|
$0 | 腳本名稱 | echo "$0" |
$1, $2, … | 位置參數 | echo "$1" |
$# | 參數個數 | echo "$#" |
$@ | 所有參數(保留空格) | for arg in "$@" |
$* | 所有參數(合併為一個字串) | echo "$*" |
$? | 上一個命令的退出狀態 | echo "$?" |
$$ | 當前 Shell 的 PID | echo "$$" |
$! | 最後一個背景程序的 PID | command & echo "$!" |
$_ | 上一個命令的最後參數 | echo "$_" |
引號與轉義
| 符號 | 說明 | 示例 |
|---|---|---|
'...' | 單引號(字面值,不展開) | echo '$USER' → $USER |
"..." | 雙引號(允許變數展開) | echo "$USER" → john |
`...` | 反引號(命令替換) | echo `date` |
$(...) | 命令替換(推薦) | echo $(date) |
\ | 轉義字符 | echo "Price: \$10" |
通配符與模式匹配
檔案名通配符(Globbing)
| 符號 | 說明 | 示例 |
|---|---|---|
* | 匹配任意字符(0 或多個) | ls *.txt |
? | 匹配單個字符 | ls file?.txt |
[abc] | 匹配括號內任一字符 | ls file[123].txt |
[a-z] | 匹配範圍內字符 | ls [a-z]*.txt |
[!abc] | 匹配不在括號內的字符 | ls file[!0-9].txt |
{a,b,c} | 大括號展開 | cp file.{txt,bak} |
模式匹配運算符
| 符號 | 說明 | 示例 |
|---|---|---|
== | 模式匹配(支援通配符) | [[ "$file" == *.txt ]] |
=~ | 正則表達式匹配 | [[ "$str" =~ ^[0-9]+$ ]] |
其他常用符號
| 符號 | 說明 | 示例 |
|---|---|---|
# | 註解 | # This is a comment |
; | 命令分隔符 | cd /tmp; ls |
& | 背景執行 | long_command & |
&& | 前一個命令成功才執行下一個 | make && make install |
|| | 前一個命令失敗才執行下一個 | test -f file || touch file |
~ | 家目錄 | cd ~ |
- | 標準輸入/上一個目錄 | cd - |