Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将变量值注入占位符配置_Linux_Bash_Shell_Ubuntu_Debian - Fatal编程技术网

Linux 将变量值注入占位符配置

Linux 将变量值注入占位符配置,linux,bash,shell,ubuntu,debian,Linux,Bash,Shell,Ubuntu,Debian,目标 使用单个命令运行文件,并用shell脚本中定义的变量替换配置文件中的占位符变量 要求 我不想获取配置文件的源代码,因为我已经尝试过了,但它不起作用 用于任何占位符变量的单个命令(即本例中的用户名和密码) 当前尝试 deploy.sh test.conf 问题 目前它将“$PLACEHOLDER\u USERNAME”更改为“$USERNAME” 我希望它将“$PLACEHOLDER\u USERNAME”更改为“tom” 您可以使用此awk命令: awk -F '[="]' 'FNR

目标

使用单个命令运行文件,并用shell脚本中定义的变量替换配置文件中的占位符变量

要求

  • 我不想获取配置文件的源代码,因为我已经尝试过了,但它不起作用
  • 用于任何占位符变量的单个命令(即本例中的用户名和密码)
当前尝试

deploy.sh

test.conf

问题

  • 目前它将“$PLACEHOLDER\u USERNAME”更改为“$USERNAME”
  • 我希望它将“$PLACEHOLDER\u USERNAME”更改为“tom”

您可以使用此awk命令:

awk -F '[="]' 'FNR==NR {a["\$PLACEHOLDER_" $1]=$3;next} 
               $3 in a {print $1 "=\"" a[$3] "\""}' deploy.sh test.conf 
deploy="tom"
credentials="secret"

嗨,谢谢你。我认为这是在将deploy.sh写入test.conf,但实际上我想做的是用deploy.sh中的占位符变量值覆盖test.conf。这将把changed
test.conf
打印到stdout。然后,您可以执行:
awk-F'[=“]”FNR==NR{a[“\$PLACEHOLDER\$1]=$3;next}$3在{print$1=\''a[$3]“\”“}”deploy.sh test.conf>\u tmp&&mv tmp test.conf中获取更改后的值
test.conf
deploy="$PLACEHOLDER_USERNAME"
credentials="$PLACEHOLDER_PASSWORD"
awk -F '[="]' 'FNR==NR {a["\$PLACEHOLDER_" $1]=$3;next} 
               $3 in a {print $1 "=\"" a[$3] "\""}' deploy.sh test.conf 
deploy="tom"
credentials="secret"