我正在尝试编写允许连接到各种服务器的脚本,例如,如何在bash脚本中使用参数/参数名称作为变量
#!/bin/bash
# list of servers
server1=10.10.10.10
server2=20.20.20.20
ssh ${$1}
而且我想运行它想:
sh connect.sh server1
无法弄清楚如何使用参数的名称作为一个变量。数组也不适用于我的Ubuntu。
我正在尝试编写允许连接到各种服务器的脚本,例如,如何在bash脚本中使用参数/参数名称作为变量
#!/bin/bash
# list of servers
server1=10.10.10.10
server2=20.20.20.20
ssh ${$1}
而且我想运行它想:
sh connect.sh server1
无法弄清楚如何使用参数的名称作为一个变量。数组也不适用于我的Ubuntu。
用途外壳间接这样的:
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
切换:
case "$1" in
server1) ssh "$server1"
;;
server2) ssh "$server2"
;;
*) ssh "$server1" # when no parameter is passed default to server1
;;
esac
试试这个:
#!/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
+1非常好的技巧,但应该提到,这只是bash。 – helpermethod
@helpermethod:谢谢,是的,这是BASH的问题,因为问题被标记为BASH。 – anubhava
嗯获取错误“错误的替代”在这里ssh $ {!arg1}。有任何想法吗? – Lamy