私の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
$