[英]bash insert multiple lines into a text file including variables from an array
我想将包含数组变量的多行文本插入文本文件,但是它正在打印变量名而不是插入变量本身,我的代码是:
printf 'server {\n server_name ${cdarray[choice]} www.${cdarray[choice]};\n root /home/nginx/domains/cmmdm/suspendedpage;\n location / {\n try_files $uri $uri/ /index.html;\n }\n}' >> /usr/local/nginx/conf/conf.d/${cdarray[choice]}.txt
如果数组变量包含“ demo-domain.com”,则输出应如下所示:
server {
server_name demo-domain.com www.demo-domain.com;
root /home/nginx/domains/cmmdm/suspendedpage;
location / {
try_files $uri $uri/ /index.html;
}
}
但它的出现是:
server {
server_name ${cdarray[choice]} www.${cdarray[choice]};
root /home/nginx/domains/cmmdm/suspendedpage;
location / {
try_files $uri $uri/ /index.html;
}
}
好的,轻松修复,将其从单引号更改为双引号解决了这个问题。
如您所见,将单引号更改为双引号似乎可以解决此问题。 但是,这不是应该使用printf
方式。 例如,如果你有一些百分之%
中的变量标志,你会得到奇怪的结果。 而是使用此:
printf 'server {\n server_name %s www.%s;\n root /home/nginx/domains/cmmdm/suspendedpage;\n location / {\n try_files %s %s/ /index.html;\n }\n}' "${cdarray[choice]}" "${cdarray[choice]}" "$uri" "$uri" >> "/usr/local/nginx/conf/conf.d/${cdarray[choice]}.txt"
每个%s
将被相应的参数替换。 这就是应该如何使用printf
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.