最初の文字列が2番目の文字列で始まるかどうかの判断

JavaScriptには、次の機能があります。

"world".startsWith("w") true 

これをシェルでテストするにはどうすればよいですか?私は次のコードを持っています:

if [ world = w ] then echo true else echo false fi 

しかし、同等性をテストしているため失敗します。ビルトインを使用したいのですが、このページのユーティリティはすべて使用できます:

http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html

回答

シェルがbashの場合:二重括弧内で、==演算子の右側は次のようになります。完全に引用されていない場合のパターン:

if [[ world == w* ]]; then echo true else echo false fi 

またはもっと簡潔に:[[ world == w* ]] && echo true || echo false [*]

bashを特に対象としない場合:パターンマッチングにはcaseステートメントを使用します

case "world" in w*) echo true ;; *) echo false ;; esac 

[*]が、iv id =に注意する必要がありますどちらかCが実行されるため “3d2c8c8c97″>

フォーム> Aが失敗するまたは Bが失敗する。 if A; then B; else C; fiフォームは、Aが失敗した場合にのみCを実行します。

回答

set world 

次に:

if [ "${1%%w*}" ] then echo false else echo true fi 

ソース文字列から

  • 何かが残っている場合、ソース文字列は2番目の文字列で始まりません
  • または:

    if [ "$1" = "${1#w}" ] then echo false else echo true fi 
    1. ソース文字列からwを削除します
    2. ソース文字列と比較します
    3. 等しい場合、ソース文字列は2番目の文字列で始まりません

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です