Bashスクリプトの論理AND

Bashスクリプトの論理AND

私のbashスクリプトの1つは、ifこれら2つのファイルのいずれかが存在することを確認し、存在しない場合は一致を再表示する必要があります。

コードがあります。

if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
 echo "match"
fi

しかし、これは何らかの理由で動作しないようです。

私はこれら2つのファイルが存在しないと110%確信しています。エラーは発生せずif

私はbashスクリプトに初めて触れたので、何が間違っているのかわかりません。

ベストアンサー1

欲しいなら誰でもまあ、あなたが望むものではORありませんAND

if [[ ! -f /etc/benchmarking/code ]] || [[ ! -f /etc/benchmarking/code.class ]]; then
 echo "match"
fi
  • 一方または両方のファイルが見つからない場合は一致します。
  • matchあなたのコードは、次の場合にのみコードを印刷します。両方存在しない。

しかし、、そう言います:

私はこれら2つのファイルが存在しないと110%確信しています。エラーは発生せず、ifを入力しません。

だからあなたの声明は矛盾しています。ファイルの少なくとも1つ〜しなければならない存在する、もしあなたは走っているそれパスワード。

if文がどのように評価されるかを見るには、run itを使用してください-x

#!/bin/bash -x
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
 echo "match"
fi

これで実行プロセスを確認できます。

$ ./test.sh
+ [[ ! -f /etc/benchmarking/code ]]
+ [[ ! -f /etc/benchmarking/code.class ]]
+ echo match
match
$ 

おすすめ記事