1 SC2330
Vidar Holen edited this page 2024-05-07 09:41:19 -07:00

BusyBox [[ .. ]] does not support glob matching. Use a case statement.

Problematic code:

#!/bin/busybox sh
if [[ $1 == https:* ]]
then
  echo "Using URL $1"
fi

Correct code:

#!/bin/busybox sh
case "$1" in
  https:*)
    echo "Using URL $1" 
    ;;
esac

Rationale:

You are using [[ .. ]] in BusyBox sh to match against a glob pattern. This is supported in Bash and Ksh, but not in BusyBox.

Rewrite the match to use a case statement instead.

Exceptions:

None.

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!