Como verificar se a opção está configurada para o script bash? [duplicado]

2

Estou criando um script bash básico que implanta uma webapp simples. Meu código atual é o seguinte.

#!/bin/bash
clear

echo "********************************************";
echo "Hello, I'm going to deploy the QuizProject";
echo "********************************************";

git pull --all;

#Only need to execute if option is present
composer install;

echo "********************************************";
echo "All the jobs done! Cheers";
echo "********************************************";

No momento, estou executando este script no comando como

bash deploy.sh

Mas isso irá executar todos os comandos no arquivo bash.

Eu quero fazer isso se um comando específico for passado, então só execute o "composer install"

bash -composer deploy.sh
    
por Achintha Samindika 04.06.2015 / 08:59

2 respostas

2

Eu entendo sua pergunta que você quer controlar a função. Talvez seja melhor feito com opções. Aqui está uma maneira:

#!/bin/bash

do_all=1
do_git=0
do_install=0
while getopts "gi" opt
do
    case $opt in
    (g) do_all=0 ; do_git=1 ;;
    (i) do_all=0 ; do_install=1 ;;
    (*) printf "Illegal option '-%s'\n" "$opt" && exit 1 ;;
    esac
done

clear

echo "********************************************";
echo "Hello, I'm going to deploy the QuizProject";
echo "********************************************";

(( do_all || do_git )) && git pull --all;

(( do_all || do_install )) && composer install;

echo "********************************************";
echo "All the jobs done! Cheers";
echo "********************************************";

Se você chamar esse script sem opções:

bash deploy.sh

ambos, git e install, serão chamados. Se você chamá-lo com a opção -i (ou resp. -g ) somente a instalação (ou a chamada do git) será feita:

bash deploy.sh -i
bash deploy.sh -g

Você também pode especificar as duas opções para fazer as duas coisas de uma das seguintes formas:

bash deploy.sh -gi
bash deploy.sh -g -i
    
por 04.06.2015 / 10:02
2
#!/bin/bash
clear

echo "********************************************";
echo "Hello, I'm going to deploy the QuizProject";
echo "********************************************";

git pull --all;

#Only need to execute if option is present
if test "$1" = "-composer"; then
    composer install;
fi

echo "********************************************";
echo "All the jobs done! Cheers";
echo "********************************************";

Execute o script como "bash deploy.sh -composer" para fazer a parte do compositor.

    
por 04.06.2015 / 10:01