'Problem with passing parameters in a shell function

I have the following shell script. There is a deploy function, that is used later in the script to deploy containers.

function deploy {

    if [[ $4 -eq QA ]]; then
        echo Building a QA Test container...
        docker create \
        --name=$1_temp \
        -e DATABASE=$3 \
        -e SPECIAL_ENV_VARIABLE \
        -p $2:9696 \ 
        ... # skipping other project specific settings
    else
        docker create \
        --name=$1_temp \
        -e DATABASE=$3 \
        -p $2:9696 \
       ... # skipping some project specific stuff
    fi

During the deployment, I have to do some tests on the application (which is in containers). I use different containers for that, however I need to pass one additional parameter to the deploy function for my QA_test container, because I need a different setting in the docker create. Hence, why I put the if statement in the begining, which checks if the 4th argument equals 'QA', and if it does it creates a specific container with special env variables, otherwise if it has just the 3 arguments, it creates a 'normal' one. I was able to run the code with two seperate deploy functions, but I want to make my code better for readabiity. Anyway, this is how it should go:

Step 1: Normal tests: 
deploy container_test 9696 test_database # 3 parameters
run tests... (this is not relevant to the question)

Step 2: QA testing: 
deploy container_qa_test 9696 test_database QA # 4 parameters, so I can create a 
                                               # a special container
run tests... (again, not relevant to the question)

Step 3: If they are successful, deploy a production-ready container:
deploy production_container 9696 production_database # 3 parameters again

However what happens according to the log:

Step 1: test_container is created. However its created with the upper if, but there is not a 4th parameter that equals QA, however it executes it.
Step 2: this runs normal.
Step 3: production container is built as a QA container

It never reaches the else part, even if the condition is not satisfied. Can anyone give me some tips?



Solution 1:[1]

just change [[ $4 -eq QA ]] to :

if [[ "$4" == "QA" ]]; then

-eq used to comapre numbers ....

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 LinPy