この関数は何も印刷しません。
skyrimse_testroot() {
local directory="$1"
find "$directory" \
\( -type f -ipath "${directory}/data/scripts/*.pex" \) -o \
\( -type d -ipath "${directory}/data/meshes" \) \
-print -quit
}
しかし、これはそうです(2番目のテストグループを削除しました)。
skyrimse_testroot() {
local directory="$1"
find "$directory" \
\( -type f -ipath "${directory}/data/scripts/*.pex" \) \
-print -quit
}
$1
は絶対パスであり、始点と-ipath
パラメータも絶対パスです。
ブール論理に関する私の基本的な知識として、より多くのOR句を肯定的な表現にリンクすると、その表現は否定的な値として評価されるべきではありません。故障したり、私に何か問題があるようですがfind
、前者より選択の余地が多いようです。
答え1
速断するとは言えませんが、find
テストの優先順位は非常に驚くことがあり、特に操作に関連する方法はさらにそうです。
~からhttps://manpages.debian.org/stable/findutils/find.1.en.html
欠陥なし
演算子の優先順位は素晴らしいです
コマンドは
find . -name afile -o -name bfile -print
印刷されません。 1つの文書これは実質的に同じであるため、find . -name afile -o \( -name bfile -a -print \)
の優先順位は-a
の優先順位よりも高く、-o
テスト間に演算子が指定されていない場合は-a
想定されます。
したがって、あなたの例では "and"の優先順位が高いので、現在の括弧は必要ありませんが、すべてのテストの周りにそれを追加する必要があります。
find "$directory" \
'(' \
-type f -ipath "${directory}/data/scripts/*.pex" \
-o \
-type d -ipath "${directory}/data/meshes" \
')' \
-print -quit