diff --git a/SC2046.md b/SC2046.md index 46a8b8f..adca7ff 100644 --- a/SC2046.md +++ b/SC2046.md @@ -29,4 +29,16 @@ In rare cases you actually want word splitting, such as in gcc $(pkg-config --libs openssl) client.c -This is because `pkg-config` outputs `-lssl -lcrypto`, which you want to break up by spaces into `-lssl` and `-lcrypto`. \ No newline at end of file +This is because `pkg-config` outputs `-lssl -lcrypto`, which you want to break up by spaces into `-lssl` and `-lcrypto`. An alternative is to put the variables to an array and expand it: + + args=( $(pkg-config --libs openssl) ) + gcc "${args[@]}" client.c + +The power of using an array becomes evident when you want to combine, for example, the command result with user-provided arguments: + + compile () { + args=( $(pkg-config --libs openssl) "${@}" ) + gcc "${args[@]}" client.c + } + compile -DDEBUG + + gcc -lssl -lcrypto -DDEBUG client.c \ No newline at end of file