別のスクリプトの出力をチェックするシェルスクリプトを作成しようとしていますが、呼び出されたスクリプトから文字列を抽出する方法がわかりません。シェルスクリプトから別のシェルスクリプト内の変数に戻り文字列を設定する
私のコードは以下の通りです:私はターミナルで「SCRIPT_FILE」を実行した場合
#!/bin/bash
outputCheck=''
errorNames=()
echo 'Performing Test Checks on Cluster 2'
c2=('NAME_1' 'NAME_2')
for((i=0; i<${#c2[@]}; i++));
do
echo 'Checking' ${c2[i]}
./scripts/SCRIPT_FILE.sh -v ${c2[i]} check | $outputCheck #this is the line that doesn't do what I expect
# expect '$outputCheck' to equal 'No errors found.' if okay
if [ "$outputCheck" != "No errors found." ];
then
echo $outputCheck
errorNames+=(${c2[i]})
else
# for testing code only
echo $outputCheck
fi
done
echo 'Check complete'
if [ "${#errorNames[@]}" != 0 ];
then
echo "The following tests had errors:"
for((i=1; i<=${#errorNames[@]}; i++));
do
echo $i: ${errorNames[i-1]}
done
fi
は、私が期待し得る「エラーが見つかりませんでした。」 'NAME_1'と 'NAME_2'の両方のスクリプトファイルでは、 '$ outputCheck'は毎回空の文字列(初期化される文字列)なので、エラーを含まないにもかかわらず 'errorNames'配列に追加されます私の方法が良くないと思う理由がある。
「SCRIPT_FILE」の出力を取得して使用するにはどうすればよいですか?
はなぜ単なる文字列が空の場合、テストは合格と失敗の場合していない、決定するために、後で配列とループにすべての出力状態を格納しませんか? – Inian
@Inian問題は、 '$ outputCheck'(変数文字列)にパイプされているようではないので、配列にすべてのステータスを入れても空であり、したがって偽陽性のテストになります – LJH