ソースを使用して別のスクリプトを呼び出し、ifステートメントを使用して呼び出し条件を設定する

ソースを使用して別のスクリプトを呼び出し、ifステートメントを使用して呼び出し条件を設定する

さまざまなサーバーにrsyncスクリプトがあります。各仮想マシンの詳細に合わせて書き換えるのではなく、詳細に対して別のスクリプトを作成しますsourcesourceif

# Check for Atlassian Apps
if [[ "$SERVER_NAME=crowd.server.com" ]]; then
  # call crowd-bkup.sh
  echo -e "\e[1mCrowd backup running ...\e[0m"
  SCRIPTDIR=$(dirname "$0")
  # shellcheck source=src/crowd-bkup.sh
  # shellcheck disable=SC1091
  source "${SCRIPTDIR}/crowd-bkup.sh"

私の質問は、Confluence、Jiraサーバーなどにさらにコンテンツを追加する方法です。 load moreステートメントを追加せずに追加できますかif

ベストアンサー1

[[ "$SERVER_NAME=crowd.server.com" ]]$SERVER_NAME=crowd.server.com常に真です(空でない文字列への拡張をテストします)。はい、意味は[[ "$SERVER_NAME" = "crowd.server.com" ]]

異なるサーバー名に対して異なる処理を実行するには、次のものを使用できますcase

case "$SERVER_NAME" in
  crowd.server.com)
    echo -e "\e[1mCrowd backup running ...\e[0m"
    ;;
  jira.server.com)
    echo -e "\e[1mJira backup running ...\e[0m"
    ;;
esac

複数の名前に対して同じコマンドを実行したい場合は、区切り記号付きの複数のパターンを使用できます|。パターンにシェルワイルドカードを使用できます。

case "$SERVER_NAME" in
  crowd.server.com|jira.server.com)
    echo -e "\e[1mBackup running in ${SERVER_NAME%.*}...\e[0m"
    ;;
  *.mysubdomain.server.com)
    echo -e "\e[1mBackup running in mysubdomain...\e[0m"
    ;;
esac

おすすめ記事