# sed 這兩段差別在那裡阿? ``` shell find .output -name "*.mjs" -type f -exec sed -i "s|{{AZURE_CDN}}|$AZURE_CDN|g" {} \; ``` ``` shell find .output -name "*.mjs" -type f -exec sed -i '' 's|{{AZURE_CDN}}|'"$AZURE_CDN"'|g' {} \; ``` 這兩段命令的主要差別在於 `sed` 命令的使用方式和參數的不同,具體如下: 1. **命令結構**: - 第一段命令使用的是 `sed -i`,這在大多數 Linux 系統中是有效的,表示直接在文件中進行修改。 - 第二段命令使用的是 `sed -i ''`,這是 macOS 上的用法,`-i ''` 表示在原地編輯文件,但不創建備份。 2. **引號的使用**: - 第一段命令使用雙引號 `"` 包裹整個 `sed` 表達式,這樣 `$AZURE_CDN` 變量會被 shell 展開。 - 第二段命令使用單引號 `'` 包裹 `sed` 表達式,並在變量 `$AZURE_CDN` 外部使用雙引號,這樣 shell 會在執行時展開變量。 3. **平台兼容性**: - 第一段命令更適合在 Linux 環境中使用。 - 第二段命令則是為了兼容 macOS,因為 macOS 的 `sed` 需要在 `-i` 參數後指定一個備份文件的擴展名(即使是空字符串)。 總結來說,這兩段命令的功能相似,但由於操作系統的不同,使用了不同的語法來達到同樣的效果。