Skip to content

SC2145 false positive when using backslash-newline #3192

Open
@krayon

Description

@krayon

For bash, a line ending with a backslash causes a false positive unless the backslash is proceeded with a space, eg:

echo "${@}"\
    |less

The following script:

#!/bin/bash

echo "1: This should not cause SC2145 error but does"; echo "${@}"\
|less

echo "2: This should not cause SC2145 error but does"; echo "${@}"\
    |less

echo "3: This should not cause SC2145 error but does"; echo "${@}"\
    "test"

echo "4: This correctly does not cause SC2145 error"; echo "${@}"|less

echo "5: This correctly does not cause SC2145 error"; echo "${@}" \
    |less

echo "6: This correctly does not cause SC2145 error"; echo "${@}" \
    "test"

echo "7: This correctly causes a SC2145 error"; echo "${@} test"

Gives the following output:


In test.bash line 3:
echo "1: This should not cause SC2145 error but does"; echo "${@}"\
                                                             ^--^ SC2145 (error): Argument mixes string and array. Use * or separate argument.


In test.bash line 6:
echo "2: This should not cause SC2145 error but does"; echo "${@}"\
                                                             ^--^ SC2145 (error): Argument mixes string and array. Use * or separate argument.


In test.bash line 9:
echo "3: This should not cause SC2145 error but does"; echo "${@}"\
                                                             ^--^ SC2145 (error): Argument mixes string and array. Use * or separate argument.


In test.bash line 20:
echo "7: This correctly causes a SC2145 error"; echo "${@} test"
                                                      ^--^ SC2145 (error): Argument mixes string and array. Use * or separate argument.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions