簡體   English   中英

bash將多行插入到包含數組變量的文本文件中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM