一部の学生はコーディングの習慣を強制しているので、bashスクリプトを使用してソースファイルを読み、行の先頭に "class"パターンがあることを確認する必要があります(インデントが発生したり発生しない場合があります)。 )行から)。パターンが見つかったら、次の文字が大文字であることを確認する必要があります。たとえば、
class Camel
class camel
最初の行を読み、パターンを見つけてclass <space>
すぐに次の文字を読みますclass <space>
。これは、テストが正常であることを示す大文字の「C」です。テストの2行目は失敗します。デフォルトでは、bash変数(例:test)は、テストが失敗した場合はFALSEに設定され、それ以外の場合はTRUEに設定されます。awk
、sed
またはを使用してこれを行うにはどうすればよいですかgrep
?
ベストアンサー1
awk
これは、前述の3つのツール(、sed
またはgrep
)のいずれかで正規表現をサポートする他のツールを使用するのと同じくらい簡単です。目的のパターンに一致する正規表現は次のとおりです。
'^\s*class [A-Z]'
行の先頭の空白の数に関係なく、文字列class
、大文字の順に一致します。次の(部分)コマンドでそれを使用してgrep
適用できます。
grep -Pq '^\s*class [A-Z]'
テストするには、次のように試すことができます。
user@host:~$ \
if echo ' class Camel' | grep -Pq '\s*class [A-Z]'; then \
echo TRUE; \
else \
echo FALSE; \
fi
TRUE
user@host:~$ \
if echo ' class camel' | grep -Pq '\s*class [A-Z]'; then \
echo TRUE; \
else \
echo FALSE; \
fi
FALSE
結果を変数に保存するには、TEST
次のようにします。
if echo ' class camel' | grep -Pq '\s*class [A-Z]'; then \
TEST=TRUE; \
else \
TEST=FALSE; \
fi