[解決済み] POSIX shで文字列が他の文字列を含んでいるかどうかを判断するにはどうすればよいですか?
2022-04-27 20:21:09
質問
Unixのシェルスクリプトで、ある文字列の中に別の文字列があった場合に様々なロジックを実行するものを書きたいのですが、どうすればいいですか?例えば、あるフォルダの中にいたら、分岐させるとか。どなたか、これを実現する方法を教えていただけませんか?できればシェルにこだわらない(つまりbash限定ではない)ものにしたいのですが、他に方法がないのであればそれで何とかします。
#!/usr/bin/env sh
if [ "$PWD" contains "String1" ]
then
echo "String1 present"
elif [ "$PWD" contains "String2" ]
then
echo "String2 present"
else
echo "Else"
fi
解決方法は?
さらに別の解決策を紹介します。これは POSIX部分文字列パラメータ展開 そのため、Bash、Dash、KornShell(ksh)、Zシェル(zsh)などで動作します。
test "${string#*$word}" != "$string" && echo "$word found in $string"
いくつかの例を含む機能化されたバージョン。
# contains(string, substring)
#
# Returns 0 if the specified string contains the specified substring,
# otherwise returns 1.
contains() {
string="$1"
substring="$2"
if test "${string#*$substring}" != "$string"
then
return 0 # $substring is in $string
else
return 1 # $substring is not in $string
fi
}
contains "abcd" "e" || echo "abcd does not contain e"
contains "abcd" "ab" && echo "abcd contains ab"
contains "abcd" "bc" && echo "abcd contains bc"
contains "abcd" "cd" && echo "abcd contains cd"
contains "abcd" "abcd" && echo "abcd contains abcd"
contains "" "" && echo "empty string contains empty string"
contains "a" "" && echo "a contains empty string"
contains "" "a" || echo "empty string does not contain a"
contains "abcd efgh" "cd ef" && echo "abcd efgh contains cd ef"
contains "abcd efgh" " " && echo "abcd efgh contains a space"
関連
-
文字列 null with space エラー: 二項演算子が期待されています。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] scpを使ってリモートからローカルにフォルダをコピーするにはどうしたらいいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] テキストファイルから、特定の文字列を含むすべての行を削除するにはどうすればよいですか?
-
[解決済み] Bashで文字列を小文字に変換する方法は?
-
[解決済み] シェルスクリプトで部分文字列を別の文字列に置き換える
-
[解決済み] シェルスクリプトを使用して、ファイル名の特定のパターンを置き換えて複数のファイル名を変更する [複製]
-
[解決済み] awk/sed で複数回発生する可能性のある 2 つのマーカーパターンの間の行を選択する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] "No such file or directory "と表示されるが、存在する
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み】$? (ドルクエスチョンマーク)変数とは?重複
-
[解決済み】LinuxのシェルスクリプトからYAMLファイルをパースする方法は?
-
[解決済み】Curlでレスポンスと一緒にhttpステータスコードも返すようにした
-
[解決済み】シェルパイプラインで`jq`を使用するには?
-
[解決済み] UNIXのシェルスクリプトで「#!/bin/sh」という行がありますが、これはどういう意味ですか?
-
[解決済み] バイナリデータを含むテキストファイルを grep するには?
-
[解決済み] sed を使って、ある行の最初の 'N' 文字を表示するにはどうしたらいいですか?
-
[解決済み] ファイルを grep して次の 5 行を取得するにはどうすればよいですか?