Вы записываете приглашение в стандартный вывод, который фиксируется подстановкой команд.Вместо этого запишите его в стандартную ошибку (как это делает read -p
).
function get_svn_credentials()
{
# First, get the credentials from the user
read -r -p "Please enter SVN User Name: " var_svn_user_name
echo -n "Please enter SVN Password: " >&2
read -r -s var_svn_password
{
echo ""
echo "----------------"
echo "The SVN User Name is: ${var_svn_user_name}"
echo "The SVN User Password is: ${var_svn_password}"
} >&2
# Next, validate provided credentials
echo -n "Validating credentials... "
#var_ret=$(svn list --username "${var_svn_user_name}" --password \
# "${var_svn_password}" ${var_url} ${var_cfg} ${var_opt}=${var_val} \
# --no-auth-cache --non-interactive 2>&1 | grep "Authentication failed")
if [[ $var_ret == "" ]]
then
echo 'Success'
else
echo 'Failed'
fi
}
Тем не менее, не полагайтесь на вывод, чтобы определить, был он успешным или нет;просто используйте статус выхода.
get_svn_credentials () {
local user_name password
# First, get the credentials from the user
read -r -p "Please enter SVN User Name: " user_name
read -r -p "Please enter SVN Password: " -s password
{
echo ""
echo "----------------"
echo "The SVN User Name is: ${user_name}"
echo "The SVN User Password is: ${password}"
} >&2
# Next, validate provided credentials
# Let the exit status of grep -q be the exit status
# of the function
printf '%s\n' "Validating credentials... " >&2
svn list --username "${user_name}" \
--password "${password}" \
"${var_url}" ${var_cfg} "${var_opt}=${var_val}" \
--no-auth-cache --non-interactive 2>&1 |
grep -q "Authentication failed"
}
main () {
if get_svn_credentials
then
echo "SVN User Name and Password was validated."
else
echo "SVN User Name and Password was NOT validated."
fi
}
main
(Примечание: вы должны , вероятно, заключить в кавычки $var_cfg
, но, возможно, это на самом деле список опций. В этом случае вам следуетвместо этого использовать массив, но поскольку по одному только этому коду это невозможно определить, я оставил его без кавычек.)