$'..'
is
undefined.#!/bin/sh
IFS=$' \t\n'
#!/bin/sh
# Note: \n can not be last, or it will be stripped by $()
IFS=$(printf ' \n\t')
or
#!/bin/sh
# Trailing linefeed added literally
IFS="$(printf ' \t')
"
or
#!/bin/bash
# Bash supports this
IFS=$' \t\n'
ANSI-C quoting, $'..'
, is a bash
extension,
which is not supported by POSIX sh
.
To ensure the script runs correctly on other systems, either switch to Bash, or rewrite it in a POSIX compatible way.
This can generally done via printf
as in the example. Be
careful about strings with trailing linefeeds, as a
$(command substitution)
will strip them.
None.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.