Built-ins

部分內容由 LLM 生成,尚未經過人工驗證。

Bash 內建指令(built-in)直接由 shell 執行,不會 fork 子程序,速度較外部指令快。

I/O

指令說明範例
read從 stdin 讀取輸入,存入變數read -r line
read -p顯示提示文字並讀取read -rp "Name: " name
read -a讀取一行並分割為陣列read -ra arr <<< "a b c"
read -s靜默模式(輸入不顯示,用於密碼)read -rs pass
read -t設定逾時秒數read -rt 5 input
printf格式化輸出(比 echo 更可靠)printf "%s\n" "$var"
echo輸出字串(避免用於含特殊字元的變數)echo "hello"

變數管理

指令說明範例
declare宣告變數並設定屬性declare -i num=10
declare -i整數型別declare -i count=0
declare -r唯讀(同 readonlydeclare -r PI=3.14
declare -a索引陣列declare -a arr
declare -A關聯陣列(associative array)declare -A map
declare -x匯出為環境變數(同 exportdeclare -x PATH
declare -p印出變數定義(debug 用)declare -p arr
local在函式內宣告區域變數local x=1
readonly設定變數為唯讀readonly CONFIG=/etc/app.conf
export匯出變數給子程序export NODE_ENV=production
unset刪除變數或函式unset myvar

陣列

指令說明範例
mapfile將 stdin 各行讀入索引陣列(bash 4+)mapfile -t lines < file.txt
mapfile -t去除每行末尾的換行符mapfile -t arr <<< "$(ls)"
readarraymapfile 的別名readarray -t lines < file.txt

腳本控制

指令說明範例
set -e任何指令失敗即退出set -e
set -u使用未定義變數時報錯set -u
set -o pipefailpipeline 中任一失敗即視為失敗set -o pipefail
set -x印出每條執行的指令(debug)set -x
shift移除第一個位置參數,其餘左移shift / shift 2
getopts解析短選項(-f, -v 等)while getopts "f:v" opt; do ...
trap攔截信號或事件並執行動作trap 'cleanup' EXIT
trap ... EXIT腳本結束時執行(cleanup 常用)trap 'rm -f "$tmp"' EXIT
trap ... ERR任何指令出錯時觸發trap 'echo "error"' ERR
eval將字串當作指令執行(謹慎使用)eval "$cmd"

作業 / 環境

指令說明範例
source / .在當前 shell 執行腳本(共享環境)source ~/.bashrc
exec用新指令取代當前 shell 程序exec python3 app.py
jobs列出背景作業jobs
wait等待背景作業完成wait $pid
type顯示指令類型(built-in / file / alias)type ls
alias建立指令別名alias ll='ls -la'
unalias移除別名unalias ll
hash快取或清除指令路徑hash -r