我正在接受 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"
关于Bash 重定向运算符 sed 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72520857/