如何将参数/参数名称用作bash脚本中的变量

时间:2013-10-15 10:13:32

标签: bash

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

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

我想像以下一样运行:

sh connect.sh server1

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

3 个答案:

答案 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