ユーザー名とメールアドレスがgit構成に存在するかどうかを確認するこの小さなスクリプトがあります。存在しない場合は、ユーザーに入力を求めます。
GIT_USER_EXISTS=`git config --get-regexp 'name' | awk '{print $2}'`
GIT_EMAIl_EXISTS=`git config --get-regexp 'name' | awk '{print $2}'`
while [[ -z $GIT_USER_EXISTS || -z $GIT_EMAIl_EXISTS ]]; do
echo "User name and Email are not set in git. Please enter them now..."
echo "First and Last name:"
read gitUser
git config --global user.name "$gitUser"
echo "Email:"
read gitEmail
git config --global user.email "$gitEmail"
done
しかし、それは機能しません;)
1番目-そもそもループに入りません。私の推測では、grepとは異なり、awkは変数にいくつかの(隠された?)文字を挿入します。2番目-ループの外側で変数を宣言したため、スクリプトが現在値があることを認識できるかどうかはわかりません。私はこの仮定で間違っていますか?
編集:
変数名を引用符で囲む代わりにバッククォートを使用して、最初の問題を解決しました。2番目の問題はまだ残っています-変数を2回宣言するよりも良い使用法があるはずですか?!シェルにいる間...doの線に沿って何か?
編集#2:
これはトリックを少し良くしますが、かなり長い条件文があります。それはおそらくもっと短いでしょうか?
while [[ -z $GIT_USER_EXISTS || -o $GIT_USER_EXISTS || -z $GIT_EMAIl_EXISTS || -o $GIT_EMAIl_EXISTS ]]; do
echo "User name and Email are not set in git. Please enter them now..."
echo "First and Last name:"
read gitUser
git config --global user.name "$gitUser"
echo "Email:"
read gitEmail
git config --global user.email "$gitEmail"
GIT_USER_EXISTS=`git config --get-regexp 'name' | awk '{print $2}'`
GIT_EMAIl_EXISTS=`git config --get-regexp 'name' | awk '{print $2}'`
done
実際には、ほとんどトリックを実行します。「varが設定されていて空の場合、またはvarが設定されていない場合」である必要があります。しかし、それは長すぎるでしょう:)