So I am facing a rather annoying problem.
I have two files:
check_ongoing_deployment.sh
#!/usr/bin/env bash
check_ongoing_deployment() {
deploy_status=$(get_deploy_state "node-server")
echo "${deploy_status}"
}
main.sh
source "$(dirname "$0")/check_ongoing_deployment.sh"
deployment_status=$(check_ongoing_deployment)
echo "Deployment status: $deployment_status"
if [[ ${deployment_status} == "PRIMARY" ]]; then
echo "No deployment in progress for ${service_to_wait}."
else
echo "Deployment on going for ${service_to_wait}. Waiting for deployment to complete."
fi
The problem is the IF
condition in main.sh
is not working.
The echo
shows deployment_status
is in fact "PRIMARY"
, but its not getting equated to the string "PRIMARY"
.
However, when I change check_ongoing_deployment.sh
to just return a string like:
#!/usr/bin/env bash
check_ongoing_deployment() {
deploy_status=$(get_deploy_state "node-server")
# echoing String
echo "PRIMARY"
}
The if
condition in main.sh
is working.
So it looks like it has something to with the getting the returned value from the function, but I cannot figure out what the if
condition is missing, as the returned value seems identical string.
EDIT: I have tried the following and still having the issue:
deployment_status=$(check_ongoing_deployment)
status=$(echo $deployment_status | tr -d '\r')
#status=$(echo $deployment_status | sed -i 's/\r$//')
if [[ $status == "PRIMARY" ]]; then
PS: Why are people is such a hurry to close questions? Did you check the script yourself and confirmed that it is indeed a duplicate and the solution works? This is more annoying than the issue.