unable to set variable in case statement bash

13,166

You need to remove the $ sign in the assignments - INSTANCE_SIZE="m1.small". With the dollar sign, $INSTANCE_SIZE gets substituted with its value and no assignment takes place - bash rather tries to execute the command that resulted from the interpolation.

Share:
13,166
upbeat.linux
Author by

upbeat.linux

Updated on June 17, 2022

Comments

  • upbeat.linux
    upbeat.linux almost 2 years

    I'm trying to set a variable based on a bunch of input conditions. Here's a small sample of the code:

    #!/bin/bash
    INSTANCE_SIZE=""
    case "$1" in
       "micro")
         $INSTANCE_SIZE="t1.micro"
         ;;
       "small")
         $INSTANCE_SIZE="m1.small"
    
         ;;
    esac
    echo $INSTANCE_SIZE
    

    When I run the script with the -ex switch and specify the proper argument:

    + case "$1" in
    + =m1.small
    ./provision: line 19: =m1.small: command not found