一般的なシェル(bash、dash、kornshell)で実行できるコマンドがあるかどうかを尋ねたかったです。line
変数にパスの一部が含まれていることを確認する必要があります。
if [[ $line =~ "$PWD"$ ]] ;then
ベストアンサー1
POSIX準拠のシェルでは、次のことができます。
case $line in (*"$PWD"*)
# whatever your then block had
;;esac
これはbash
、、、dash
および名前を付けることができる他のすべてのシェルで機能します。
また、複数の可能性を簡単に処理するために使用することもできます。たとえば、
case $line in
(*"$PWD"*)
echo \$PWD match\!
;;
(*"$OLDPWD"*)
echo \$OLDPWD match\!
;;
(*)
! echo no match\!
;;esac
シフトを使用することもできます。
case $line in (*"$PWD"*|*"$OLDPWD"*)
echo '$OLDPWD|$PWD match!'
;;esac
上記の引用の使用に注意してください。
case $line ...
- ステートメントのオブジェクトは
case
分割されたり、$IFS
ファイル名 gen のパターンとしては使用されません。これは[[
テストで左パラメータを処理する方法と似ています。
- ステートメントのオブジェクトは
(*"$PWD"*)
- ここで、シェル拡張は
$IFS
ファイル名の生成に影響されません。引用符のない拡張子は分割されたり、ワイルドカードとして指定されたりしません。 - ただし、ここで引用されていない拡張はリテラル文字列ではなくパターンとして解釈される可能性があるため、拡張は引用の有無に応じて複数の意味を持つことがあります。
- 文字通り解釈されるパターン文字を参照することが重要であるかのように、文字通り解釈されるべきパターンで使用されるすべての変数を引用することが重要です。
- たとえば、
$PWD
aが含まれていて引用符がない場合、検索するリテラルではなくパターンオブジェクト*
として解釈されます。*
- ここで、シェル拡張は