Im *_*ine 17 string variables bash concatenation
我有一个bash脚本我遇到一些问题,连接2个变量来调用第三个.
这是脚本的简化,但是在阅读文档之后,语法就是我的想法.
server_list_all="server1 server2 server3";
var1 = "server";
var2 = "all";
echo $(($var1_list_$var2));
Run Code Online (Sandbox Code Playgroud)
这与我得到的答案一样接近,它确认字符串并在标记化上抛出错误.
syntax error in expression (error token is "server1 server2 server3....
Run Code Online (Sandbox Code Playgroud)
在文档中没有真正看到任何内容,但它应该是可行的.
编辑:清理了一下
Eri*_*ith 32
该猛砸参考手册介绍如何使用参数扩展的实用的功能做了一些间接.在您的情况下,您有兴趣查找其名称由另外两个变量定义的变量的内容:
server_list_all="server1 server2 server3"
var1=server
var2=all
combined=${var1}_list_${var2}
echo ${!combined}
Run Code Online (Sandbox Code Playgroud)
引用时的感叹号combined表示"使用名称由内容定义的变量combined"
Advanced Bash Scripting Guide为您提供答案(http://tldp.org/LDP/abs/html/ivr.html).你有两个选择,第一个是经典的shell:
#!/bin/bash
server_list_all="server1 server2 server3";
var1="server";
var2="all";
server_var="${var1}_list_${var2}"
eval servers=\$$server_var;
echo $servers
Run Code Online (Sandbox Code Playgroud)
或者你可以使用bash快捷方式$ {!var}
#!/bin/bash
server_list_all="server1 server2 server3";
var1="server";
var2="all";
server_var="${var1}_list_${var2}"
echo ${!server_var}
Run Code Online (Sandbox Code Playgroud)
两种方法都有效.