PWDにスペースや英語以外の文字が含まれているかどうかはどうすればわかりますか?

PWDにスペースや英語以外の文字が含まれているかどうかはどうすればわかりますか?

環境変数を作成しました。

WD=`pwd`

スペースや英語以外の文字が含まれているかどうかを確認するには?

ベストアンサー1

「非英語文字」とは、通常のラテン文字26文字ではない文字を意味すると思います。厳密に言えば、あなたの要件を満たすテストは次のとおりです。

if tmp=${WD//[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]/};
   [[ $tmp = *[[:alpha:] ]* ]]; then
  # $WD contains letters other than A-Z and a-z or a space

つまり、英字を削除し、まだ文字またはスペースがあることを確認します。

¿実際には、またはまたは£など、非ASCII文字を含むASCII以外のすべての文字とすべてのスペースを避けたいと思います٣!パスできない文字~(スペースを除くASCII文字)を一致させることでこれを行うことができます。

if (LC_ALL=C; [[ $WD = *[^!-~]* ]]) then …

気づく範囲は、ユーザーが設定した期待値に応じて、常にパフォーマンスが良くて!-~もそうではありません。A-ZLC_COLLATEだから私たちはそれをLC_ALL既知の値(LC_ALLすべての値より優先)に設定しました。ロケール設定)。

ファイルで「異常な」文字をチェックする場合(ほとんどの最新プラットフォームで許可されているスペースを除外したい理由)、移植できない文字を許可しないより制限的なリストを持つことが合理的かもしれません。 。POSIXASCII文字、数字、および-._

if (LC_ALL=C; [[ $WD = *[^-._0-9A-Za-z]* ]]) then …

おすすめ記事