在双引号内执行本地bash变量

jdo*_*man 3 bash for-loop echo

假设我有四个网络服务器,我需要在文件中添加一行HTML.如您所见,我需要在cluster =之后出现整数

for i in 01 02 03 04; do ssh web.${i}.domain.com 'echo "<img src=beacon.gif?cluster=${i}>" >> /var/www/index.html'; done
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标?提前致谢.

nos*_*sid 11

请注意'前后${i}:

for i in 01 02 03 04; do
    ssh web.${i}.domain.com 'echo "<img src=beacon.gif?cluster='${i}'>" >> /var/www/index.html'
done
Run Code Online (Sandbox Code Playgroud)

编辑:在编程语言中引用shell和字符串文字之间存在巨大差异.在shell中,"引用用于删除某些字符或单词到shell的特殊含义"(bash手册).以下行与bash相同:

'foo bar'
foo' 'bar
Run Code Online (Sandbox Code Playgroud)

没有必要引用字母字符 - 但它增强了可读性.在您的情况下,只有像"<必须引用的特殊字符.但是变量$i只包含数字,这种替换可以在引号之外安全地完成.