我有一个小脚本,用于检查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:
这样做的好一点,但有一个相当长的条件语句。它可能更短吗?
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”。但这太长了:)
答案 0 :(得分:1)
尝试这样做:
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"
GIT_USER_EXISTS="git config --get-regexp 'name' | awk '{print $2}'"
GIT_EMAIl_EXISTS="git config --get-regexp 'name' | awk '{print $2}'"
done
$GIT_USER_EXISTS
或$GIT_EMAIl_EXISTS
,则应在某处声明;)