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

Replace or update a line in bash script

我有一个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" 替换为用户输入。有关详细信息,请参阅 this discussion:)

您正在寻找符合以下内容的内容:

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 命令 works slightly different-i 标志需要一个附加参数来说明要使用哪种备份,例如将 sed -i 替换为 sed -i 'bak'