替换或更新 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'
。
我有一个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'
。