
いくつかのタスクを実行するスクリプトがあります。
XML
リストの構成- そのうち
XML
一致するものをリストしてください。 - そのゲームが何であるかを見せてください。
JENKINS_HOME=/var/lib/jenkins
_ALL_JOBS=$( find $JENKINS_HOME/jobs -name config.xml )
_CRON_JOBS=$( for _JOB in $( echo "$_ALL_JOBS" ); do grep -l 'triggers.TimerTrigger' $_JOB; done )
for _JOB in $( echo "$_CRON_JOBS" ); do
_TIME_TRIGGER=$( grep -A 1 'hudson.triggers.TimerTrigger' $_JOB | head -2 | tail -1 )
echo ${_JOB}: $_TIME_TRIGGER
done
$_ALL_JOBS
それは次のとおりです。
/var/lib/jenkins/jobs/Testing/jobs/job1/config.xml
/var/lib/jenkins/jobs/Testing/jobs/job2/config.xml
/var/lib/jenkins/jobs/Testing/jobs/job3/config.xml
/var/lib/jenkins/jobs/Testing/jobs/job4/config.xml
/var/lib/jenkins/jobs/Testing/jobs/job5/config.xml
$_CRON_JOBS
オプションで、$_ALL_JOBS
次のようになります。
/var/lib/jenkins/jobs/Testing/jobs/job2/config.xml
/var/lib/jenkins/jobs/Testing/jobs/job4/config.xml
/var/lib/jenkins/jobs/Testing/jobs/job5/config.xml
これらのファイルのいずれかのコマンドラインからGREPを実行すると、次の結果が表示されます。<spec>H 1 * * *</spec>
ループ内の各ファイルに対して同じコマンドを実行すると、次の結果が表示されます。追加する現在作業中のディレクトリの内容:
<spec>H */6 file1 file2 file3 file4 file5*</spec>
別の作業ディレクトリに変更してスクリプトを実行すると、同じ結果が得られますが、XMLタグ間に表示されるファイルは新しい作業ディレクトリ用です。
<spec>H */6 file6 file7 file8 file9 file10*</spec>
現在の作業ディレクトリの内容が一致に含まれるようにするループまたは一致がありますか?
どんなアイデアもありがとうございます。
答え1
次の例を試してください。
$ mkdir -p test_dir && cd test_dir/
$ touch file1 file2
$ time_trigger='<spec>H 1 * * *</spec>'
$ echo "$time_trigger"
<spec>H 1 * * *</spec>
$ echo $time_trigger
<spec>H 1 file1 file2 file1 file2 *</spec>
出力は引用符のない変数の結果であり、一部のアスタリスクは現在のディレクトリのファイルに展開されます。
echo
これを修正した後もファイル名にスペースが含まれている場合、印刷変数を使用しないでください。この出力を変数に再割り当てするなど、コードの一部が失敗する可能性があるため、脆弱です。
可能なスクリプトのバージョンは次のとおりです。
find "$JENKINS_HOME"/jobs -name 'config.xml' -exec sh -c '
for f do
<apply your logic for every config file "$f">
done' sh {} +
これを見て郵便はがき参考用。