From fcd5a994c7c5e82ecee7e53bc3e0fc4752238b54 Mon Sep 17 00:00:00 2001 From: koalaman Date: Thu, 29 Sep 2016 14:14:35 -0700 Subject: [PATCH] Created SC2054 (markdown) --- SC2054.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 SC2054.md diff --git a/SC2054.md b/SC2054.md new file mode 100644 index 0000000..985563c --- /dev/null +++ b/SC2054.md @@ -0,0 +1,26 @@ +## Use spaces, not commas, to separate array elements. + +### Problematic code: + +```sh +flags=("-l", "-d", "--sort=size") +ls "${flags[@]}" +``` + +### Correct code: + +```sh +flags=("-l" "-d" "--sort=size") +ls "${flags[@]}" +``` +### Rationale: + +You appear to have used commas to separate array elements in an array assignment. Other languages require this, but bash instead treats the commas as literal strings. + +In the problematic code, the first element is `-l,` with the trailing comma, and the executed command ends up being `ls -l, -d, --sort=size`. + +In the correct code, there are no trailing commas and the command will be `ls -l -d --sort=size` as expected. + +### Exceptions: + +None (if you actually want a trailing comma in your strings, move it inside the quotes). \ No newline at end of file