Как использовать имя аргумента / параметра в качестве переменной в скрипте bash
Я пытаюсь написать скрипт, который позволяет подключение к различным серверам, например
#!/bin/bash
# list of servers
server1=10.10.10.10
server2=20.20.20.20
ssh ${$1}
И я хотел бы запустить его так:
sh connect.sh server1
Не могу понять, как использовать имя параметра в качестве переменной. Массивы не работают на моем Ubuntu тоже.
3 ответа
Решение
Используйте опосредованную оболочку следующим образом:
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