我正在尝试编写一个允许连接各种服务器的脚本,例如
#!/bin/bash
# list of servers
server1=10.10.10.10
server2=20.20.20.20
ssh ${$1}
我想像以下一样运行:
sh connect.sh server1
无法弄清楚如何将参数的名称用作变量。数组也不适用于我的Ubuntu。
答案 0 :(得分:8)
像这样使用shell间接:
x=5
y=x
echo ${!y}
5
对于您的脚本,以下作品:
#!/bin/bash
# list of servers
server1=10.10.10.10
server2=20.20.20.20
arg1="$1"
ssh ${!arg1}
答案 1 :(得分:1)
最简单的方法是开启$1
:
case "$1" in
server1) ssh "$server1"
;;
server2) ssh "$server2"
;;
*) ssh "$server1" # when no parameter is passed default to server1
;;
esac
答案 2 :(得分:0)
试试这个:
#!/bin/bash
# list of servers
server1=10.10.10.10
server2=20.20.20.20
if [ "$1" == "server1" ]; then
ssh $server1;
elif [ "$1" == "server2" ]; then
ssh $server2;
fi