Bash重定向操作符sed命令



我正在进行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"

我对重定向操作符的位置很困惑"<&quot;在这一行的开头。部署正在工作,所以这不是语法问题。

大多数人把重定向放在命令的末尾,但它们实际上可以出现在任何地方。它们可以在其他参数的开头,甚至中间(不推荐,但合法!)。

这些都是等价的:

< "$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

相关内容

  • 没有找到相关文章

最新更新