bash: Why are () causing error in script but not on the command line? Code Answer

Hello Developer, Hope you guys are doing great. Today at Tutorial Guruji Official website, we are sharing the answer of bash: Why are () causing error in script but not on the command line? without wasting too much if your time.

The question is published on by Tutorial Guruji team.

If I type this on the command line:

_longopt ()
{
    case "$prev" in
        --+([-a-z0-9_]))
            echo foo
        ;;
    esac;
}

it works as expected.

If I put it in a script (foo.sh) it fails:

./foo.sh: line 6: syntax error near unexpected token `('
./foo.sh: line 6: `        --+([-a-z0-9_]))'

Why?

And more importantly: Given that I have a function already defined like the above, how can I automatically convert it into a function that works in a script?

$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Answer

You need:

shopt -s extglob

Thanks @St├ęphane Chazales for pointing me at extglob.

We are here to answer your question about bash: Why are () causing error in script but not on the command line? - If you find the proper solution, please don't forgot to share this with your team members.

Related Posts

Tutorial Guruji