我有一个test.tf
文件,文件的内容类似于这个
variable "google_account_key" { default = "none" }
variable "aws_ec2_key" { default = "none" }
variable "golang_key" { default = "none" }
现在,当我收到用户的输入时,我想更新该文件例如
read -s -p "--> Kindly enter Name for ec2 key: " name
现在,无论用户输入什么,我都会将默认值替换为test.tf
文件中的aws_ec2_key。
似乎您想要替换文件中出现的单词,您正在寻找一个带有-i
标志的sed
命令来实际将替换内容保存在文件中。我们不能替换单词"none"
,因为这将替换所有单词,所以我们应该查找"aws_ec2_key" { default = "none"
并用用户输入替换这个"none"
。有关更多信息,请参阅此讨论:(
您正在寻找以下内容:
read -s -p "--> Kindly enter Name for ec2 key: " name
sed -i "s/"aws_ec2_key" { default = "none" }/"aws_ec2_key" { default = "$name" }/g" test.tf
- 请注意,我们使用的是双引号
"
,而不是通常的单引号'
,因此我们可以在sed命令中使用bash变量$name
- 如果您在mac上,
sed
命令的工作方式略有不同。-i
标志需要一个额外的参数来告知要使用哪种备份,例如用sed -i 'bak'
替换sed -i