2

我正在尝试编写一个允许连接到各种服务器的脚本,例如

#!/bin/bash
# list of servers
server1=10.10.10.10
server2=20.20.20.20
ssh ${$1}

我想像这样运行它:

sh connect.sh server1

无法弄清楚如何将参数的名称用作变量。阵列也不适用于我的 Ubuntu。

4

3 回答 3

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}
于 2013-10-15T10:16:04.877 回答
1

最简单的方法是打开$1

case "$1" in
  server1) ssh "$server1"
           ;;
  server2) ssh "$server2"
           ;;
  *) ssh "$server1" # when no parameter is passed default to server1
     ;;
esac
于 2013-10-15T10:16:12.857 回答
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
于 2013-10-15T10:22:47.490 回答