(or "In dash, ... are not supported." when using
dash
)
#!/bin/sh
var=(foo bar)
echo "${var[1]}"
The easiest solution is to switch to a shell that does support
arrays, like bash
:
#!/bin/bash
var=(foo bar)
echo "${var[1]}"
Alternatively, rewrite the logic to use e.g. indirect variable
references or set
:
#!/bin/sh
set -- foo bar
echo "$2"
Arrays are supported in bash
and ksh
, but
not in dash
or POSIX sh
. Either switch to a
shell that supports them, or rewrite your script without relying on
arrays. This may not be straight forward.
If you only intend to target shells that supports this feature, you can change the shebang to a shell that guarantees support, or ignore this warning.
You can use # shellcheck disable=SC3000-SC4000
to ignore
all such compatibility warnings.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.