簡體   English   中英

Bash 重定向運算符 sed 命令

[英]Bash redirection operator sed command

我正在接受 Google Cloud 培訓,該培訓使用 bash 腳本執行 sed 字符串替換,然后部署到端點服務。 有這條 bash 線,我無法理解......

mv "$temp_file" "$TEMP_FILE"
# Because the included API is a template, we have to do some string
# substitution before we can deploy it. Sed does this nicely.
< "$API_FILE" sed -E "s/YOUR-PROJECT-ID/${project_id}/g" > "$TEMP_FILE"

有人可以解釋重定向運算符在“$API_FILE”擴展之前正在做什么嗎? 這是不是另一種寫法:

sed -E "s/YOUR-PROJECT-ID/${project_id}/g" "$API_FILE" > "$TEMP_FILE"

我對行首的重定向運算符“<”的 position 感到很困惑。 部署工作正常,因此這不是語法問題。

大多數人將重定向放在命令的末尾,但它們實際上可以出現在任何地方。 它們可以在開頭,甚至可以在其他 arguments 的中間(不推薦,但合法。)。

這些都是等價的:

< "$API_FILE" sed -E "s/YOUR-PROJECT-ID/${project_id}/g" > "$TEMP_FILE"
sed < "$API_FILE" -E "s/YOUR-PROJECT-ID/${project_id}/g" > "$TEMP_FILE"
sed -E < "$API_FILE" "s/YOUR-PROJECT-ID/${project_id}/g" > "$TEMP_FILE"
sed -E "s/YOUR-PROJECT-ID/${project_id}/g" < "$API_FILE" > "$TEMP_FILE"

重定向運算符可以在簡單命令之前或出現在任何地方,也可以在命令之后。 重定向按照它們出現的順序從左到右處理。

參見手冊: https://www.gnu.org/software/bash/manual/html_node/Redirections.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM