替换或更新bash脚本中的一行



我有一个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

最新更新