私が持っているif
2つのファイルのいずれかが存在する場合、彼らはそれが試合をエコーすべき存在しない場合は、チェックする必要が私のbashスクリプトで。
私が持っているコード:
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
しかし、これは何らかの理由で機能しないようです。
これら2つのファイルが存在しないことを110%確信しています。エラーは発生しませんが、に入りませんif
。
私はbashスクリプトを初めて使用するので、何が問題なのかわかりません。
[[ -f xxx ]]
xxxが存在し、通常のファイル(または通常のファイルへのシンボリックリンク)である場合、trueを返します。存在しない場合、または存在するかどうか、存在しないが通常のファイル(ディレクトリ、パイプ、デバイス、ソケットなど)ではない場合、またはシンボリックリンクの場合は、falseを返します。存在しないファイル、またはファイルが存在するかどうか、または通常のファイルではないかどうかを判断できない場合... [[ -e $file ]] || [[ -L $file ]]
存在のテストに近いです。ls -d -- "$file" > /dev/null 2>&1
さらに近いです。そして原則として、この種のテストは競合状態につながります。多分別の方法があります。
[[ ! -f /etc/.../... ]]; echo $?
ごとに。