6

case in bash:

line 4: syntax error near unexpected token `)'

I'm trying to use the command case in Bash (on my Raspberry Pi again), but when I run my script, Bash spits out errors. I've read over many tutorials and I think I'm doing the same thing as them, but something's just not right.

Here's my code:

#!/bin/bash
case "$1" in
        help) echo "You asked for help. Sorry, I'm busy."
        *) echo "You didn't say anything. Try 'help' as the first argument."
esac

Here's the output (the filename is newmkdir and I ran it with no arguments):

./newmkdir: line 4: syntax error near unexpected token `)'
./newmkdir: line 4: `   *) echo "You didn't say anything. Try 'help' as the first argument."'

I'm trying to have my script interpret help and then make anything else output the next line.

(Note this is just an example of a glitched script. This script has no meaning and might not even make sense, it's just a test.)

2
  • 4
    You need ;; in each cases.
    – alvits
    Commented Oct 21, 2015 at 1:16
  • 4
    You may find shellcheck useful. Commented Oct 21, 2015 at 1:22

1 Answer 1

8

You are missing ;; at the end of each pattern:

#!/bin/bash
case "$1" in
        help)
            echo "You asked for help. Sorry, I'm busy."
            ;;
        *)
            echo "You didn't say anything. Try 'help' as the first argument."
            ;;
esac

Think of it as a break statement in a programming language. They are compulsory on case.

2
  • 1
    Technically, the ;; is optional before the esac, but that's a bad reason for leaving it off. Commented Oct 21, 2015 at 1:22
  • 1
    Thanks! ... I realized the tabbing 'issue' right after I posted this, but thanks anyway for correcting it.
    – Eric Reed
    Commented Oct 25, 2015 at 17:39

Not the answer you're looking for? Browse other questions tagged or ask your own question.