使用 Shell 變數替換

單引號'中的變數不會被 POSIX 相容 shell 擴充套件,因此在 sed 替換中使用 shell 變數需要使用雙引號 " 而不是單引號'

$ var="he"
$ echo "hello" | sed "s/$var/XX/"
XXllo

$ var="he"
$ echo "hello" | sed 's/$var/XX/'
hello

在評估變數時要小心命令注入:

$ var='./&/;x;w/etc/passwd
> x;s/he'
$ echo "hello" | sed "s/$var/XX/"
sed: /etc/passwd: Permission denied

如果上面以 root 身份執行,則輸出將與第一個示例無法區分,並且/etc/passwd 的內容將被銷燬。