我正在进行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"
我对重定向操作符的位置很困惑"<"在这一行的开头。部署正在工作,所以这不是语法问题。
大多数人把重定向放在命令的末尾,但它们实际上可以出现在任何地方。它们可以在其他参数的开头,甚至中间(不推荐,但合法!)。
这些都是等价的:
< "$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