語法符號表

部分內容由 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
<< EOFHere Documentcat << EOF
<<< "text"Here Stringgrep "pattern" <<< "$text"

管道

符號說明示例
|管道(連接命令)ls | grep ".txt"
|&管道(包含錯誤輸出)command |& tee output.log

特殊變數與引號

特殊變數

符號說明示例
$0腳本名稱echo "$0"
$1, $2, …位置參數echo "$1"
$#參數個數echo "$#"
$@所有參數(保留空格)for arg in "$@"
$*所有參數(合併為一個字串)echo "$*"
$?上一個命令的退出狀態echo "$?"
$$當前 Shell 的 PIDecho "$$"
$!最後一個背景程序的 PIDcommand & 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 -

相關主題