オプションがbashスクリプトに設定されているかどうかを確認するには? [コピー]

オプションがbashスクリプトに設定されているかどうかを確認するには? [コピー]

単純なWebアプリケーションをデプロイするための基本的なbashスクリプトを作成しています。私の現在のコードは次のとおりです。

#!/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 "********************************************";

現在私はコマンドでこのスクリプトを実行しています。

bash deploy.sh

しかし、これはbashファイルのすべてのコマンドを実行します。

特定のコマンドを渡すときにこれを実行してから、「composer install」を実行したいと思います。

bash -composer deploy.sh

ベストアンサー1

あなたの質問を理解してください。その機能を制御したい。たぶん、オプションを使って行うのが最善です。 1つの方法は次のとおりです。

#!/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 "********************************************";

オプションなしでスクリプトを呼び出す場合:

bash deploy.sh

gitとinstallの両方が呼び出されます。オプション-i(または関連)と一緒に呼び出すと、インストールのみ-gが完了します(関連するgit呼び出し)。

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

次のいずれかの方法で2つのオプションを指定して2つの操作を実行することもできます。

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

おすすめ記事