bashスクリプトでは、git user.emailが設定されていないか、sshキーがない場合にのみ、ユーザーにメールアドレスを入力する必要があります。私はbashの経験がほとんどないので、私はこのプロジェクトのために何度もstackoverflowに来ています。 this stackoverflow answerに基づいてBash - ファイルが長い式の一部として存在するかどうかを調べる
、私はこの思い付いた:
if [[ ! -f "$HOME/.ssh/id_rsa" ]]; then
echo "No File Found"
else
echo "File Found"
fi
これは期待される動作があります。id_rsa
が存在する場合、それはファイルが見つかり言います。 id_rsa
を削除すると、No File Foundと表示されます。
しかし、私は長い表現の一部としてこれを動作させることはできません。ここで私がこれまで持っているものです。
md_email=$4
... more code ...
if [[ "$md_email" = "" && "`git config --get user.email`" = "" || ! -f "$HOME/.ssh/id_rsa" ]]; then
echo "No File Found"
else
echo "File Found"
fi
これは常に印刷んが、ファイルが見つかりません。 2番目と3番目の式を最初のものから分離し、3番目の式を他のものと分離して動作させる方法で、ブラケット、二重括弧、およびかっこのさまざまな組み合わせを試しました。すべて無駄に。私は何が欠けていますか?
@codeforesterの要請:あなたはこれを行うことができ
ls -l $HOME/.ssh/id_rsa
-rw------- 1 menasheh menasheh 3243 Feb 13 22:52 /home/menasheh/.ssh/id_rsa`
「XとYまたはZが場合は、」あいまいなの一種です。 「If(X and Y)or Z」、「If X and(Y or Z)」という意味ですか? – Guest
Xと(YまたはZ)であることが意図されていましたが、その構文についてはわかりませんでした。ちょうどかっこですか? – Menasheh
構文は '[[X]] && [[Y || Z]];それから...。 – Guest