Se eu entendi corretamente, você precisa de um comando que tomará um sistema operacional como entrada e retornará o comando de instalação correto lendo a tabela mostrada. Se a sua tabela realmente estiver no formato exibido, incluindo os bonitos para humanos, mas inúteis para máquinas |
e -
, você pode fazer isso para obter o servidor da Web:
awk -vOS="Centos" '$2==OS{print $6,"install",$8}' table
E isso para o banco de dados:
awk -vOS="Centos" '$2==OS{print $6,"install",$10}' table
A saída real seria:
$ awk -vOS="Centos" '$2==OS{print $6,"install",$8}' table
yum install httpd
$ awk -vOS="Centos" '$2==OS{print $6,"install",$10}' table
yum install mariadb
$ awk -vOS="Ubuntu" '$2==OS{print $6,"install",$8}' table
apt-get install apache
$ awk -vOS="Ubuntu" '$2==OS{print $6,"install",$10}' table
apt-get install mysql
Se a sua tabela estiver em um formato mais simples, como:
Version PackageManager Webserver Database
Centos 7 yum httpd mariadb
Ubuntu 14.04 apt-get apache mysql
O texto acima seria:
awk -vOS="OS_NAME" '$1==OS{print $3,"install",$4}'
awk -vOS="OS_NAME" '$1==OS{print $3,"install",$5}'
Assim, no seu script, supondo que você tenha o sistema operacional salvo como $os
e a opção passada ( webserver
ou database
) como $option
, você pode fazer:
case $option in
"webserver")
commmand=$(awk -vOS="$os" '$2==OS{print $6,"install",$8}' table ) ;;
"database")
command=$(awk -vOS="$os" '$2==OS{print $6,"install",$10}' table) ;;
esac