スクリプトを実行するための条件としてifステートメントを使用するのに問題があります。
添付データを含む承認済みファイルのリストと比較して、ディレクトリ内のすべてのファイルを確認するforループがあります。
for ( y in `ls directory` )
do
if [[ y =~ $(awk -F',' '{ print $1 }) ]]
then
ydata=grep $y file
sh $ydata
fi
done
forループはディレクトリ内の各ファイルを実行するものであり、正常に動作します。
if は与えられたファイルがリストにあるかどうかをチェックします。 y結果のほんの一部が承認され、スクリプトで使用されることが予想されるため、失敗する可能性がある条件が必要です。 [[これは私には合わない]]
最後に、スクリプトを実行するために行全体をパラメータとして要求するファイル(ファイル名、日付、リスク、レベルなど)から行全体を抽出するgrepがあります。ただし、ファイルがリストにない場合はスクリプトを実行したくなく、可能であればディレクトリ内のすべての項目をgrepしたくはありません。
どんなアイデアがありますか?
答え1
@Gray_M 何が必要なのかわかりません。質問に詳細を提供するか、処理するデータサンプルを投稿することもできます。
私が理解していないものは次のとおりです。
- データを含む承認済み文書のリスト(添付ファイル?説明してください)
- ディレクトリ内のすべてのファイルを実行します。(ファイルはスクリプトという意味ですか?)それとも各ファイルを処理することを意味しますか?
- 結果のごく一部のみが承認され、スクリプトに使用されることが予想されます。(どのスクリプトで使用されますか?) 新しいスクリプトですか?スクリプトを実行しますか?呼び出しスクリプト?呼び出しスクリプトはどのように生成されますか?データはスクリプトですか?データと例を投稿できますか?
$(awk -F',' '{ $1 印刷 })完全に間違っています。欠落している引用符に加えて、データは受信されませんでした。これは、awkが処理するものがないことを意味します。
とにかく、まず以下の簡単なスクリプトが役に立ちます。
#!/bin/bash
scripts_folder="scripts_to_check_folder"
conditions_file="conditions_file"
for file in $(ls "$scripts_folder"); do
if grep -F "$file" $conditions_file; then
sh "$scripts_folder/$file"
else
echo "Will not execute this script: $file"
fi
done
ループは、内容に応じて一部のスクリプトを実行または実行しません。条件ファイルデフォルトではスクリプト名が含まれます。
さらなるサポートを提供するために、詳細をもう一度提供してください。
答え2
あなたの質問(私が注意深く読んだ場合)はif文に関するものです。条件は興味深い内容を提供しません。まず、「y」は「&y」でなければなりません。