最小限の、DRY、美しい方法で同じディレクトリにある複数のファイルを実行する方法は?

最小限の、DRY、美しい方法で同じディレクトリにある複数のファイルを実行する方法は?

私はUbuntu 16.04を使用しており、私のGitHubプロジェクトを自分のコンピュータにダウンロードした後に得られた多くのファイルを実行するローカライズファイルがあります。

ファイルにはという名前のBashスクリプトが含まれていますlocalize.sh。サブセッションで実行します~/${repo}/localize.sh

このファイルには、子セッションですべての関連ファイルを実行するための同じ基本パターン(以下を参照)を持つ複数行が含まれています。

ファイルの実際の内容は次のとおりです。

#!/bin/bash
~/${repo}/apt/security.sh
~/${repo}/apt/lemp.sh
~/${repo}/apt/certbot.sh
~/${repo}/apt/misc.sh

~/${repo}/third-party/pma.sh
~/${repo}/third-party/wp-cli.sh

~/${repo}/conf/nginx.sh
~/${repo}/conf/php.sh
~/${repo}/conf/crontab.sh

~/${repo}/local/tdm.sh

繰り返しパターンを見ることができます~/${repo}/

これは大きな問題ではありませんが、ファイルが大きくなる必要があるため、重複する文字を減らすことをお勧めします。

DRYを実装する最も簡単な方法は何ですか(繰り返さないでくださいこのコードのバージョンは何ですか?

私は個人的にこの場合、長いワイヤを使用したくありません。

編集:原則として、.txtにリストされているファイル以外のファイルはリストされたディレクトリには存在せず、存在しないでくださいlocalize.sh


localize.shさらに、名前やファイルを呼び出す動作はlocalization悪いアプローチかもしれません。間違って書かれたと思われる場合は、私を批判し、注意事項を指摘してください。

ベストアンサー1

実行中かどうかわからないみんなスクリプトは関連ディレクトリにありますが、そうであればrun-parts便利です。

for subdir in apt third-party conf local
do
    run-parts --regex '\.sh$' ~/${repo}/${subdir}
done

これにより、各ディレクトリ内で英数字順にスクリプトが実行されるため、サブディレクトリ内の順序が重要な場合は、名前を変更するか番号を付ける必要があります。run-parts次のオプションを使用して実行すると、実行する作業を事前に確認できます--test

apt/certbot.sh
apt/lemp.sh
apt/misc.sh
apt/security.sh
third-party/pma.sh
third-party/wp-cli.sh
conf/crontab.sh
conf/nginx.sh
conf/php.sh
local/tdm.sh

おすすめ記事