スクリプトファイルから別のファイルにパターンを読み取るのに問題があります。デフォルトでは、あるファイルの出力は別のスクリプトファイルの入力として使用する必要があります。 maze_gen の出力は # と空白記号の配列です。例 5 下の 7 は出力の高さと幅を示しています。
if [`./maze_gen 5 7 | grep -E "[^# ]"` ]; then
echo no
else
echo yes
fi
maze_gen
一連のスペースを生成するファイルです#
。これは現在作業中の入力ファイルとして受け取ります。私のコードに問題があります。入力に#
文字しかないことを確認できません。
答え1
テストしたい出力に./maze_gen 5 7
スペースやハッシュ以外の文字が含まれているようです。
以下を使用すると、これをより効率的に実行できます。
if ./maze_gen 5 7 | grep -q '[^ #]'
then
echo no
else
echo yes
fi
実際にはそうではありません。タブレット式に一致する行です。代わりgrep -q
に、パターンが一致するとすぐに終了し、終了ステータスgrep
はステートメントで使用するif
分岐(echo no
またはecho yes
)を決定するために使用されます。
パターンが一致すると、ユーティリティは入力処理を停止し、シェルが文字列比較テストに使用するgrep
ために出力を保存する必要がないため、これはユーザーが試したよりも効率的です。grep
コードに構文エラーがあるため、コードは実行されません。[
周囲にスペースが必要です。
さらに、-E
一部の実装は拡張正規表現を有効にするために使用できますgrep
。あなたの場合、式はデフォルトの正規表現なので、これを行う必要はありません。