mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Created SC1036 (markdown)
35
SC1036.md
Normal file
35
SC1036.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
## `(` is invalid here. Did you forget to escape it?
|
||||||
|
|
||||||
|
### Problematic code:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
echo (foo) bar
|
||||||
|
```
|
||||||
|
|
||||||
|
### Correct code:
|
||||||
|
|
||||||
|
Depends on your intention:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
echo "(foo) bar" # Literal parentheses
|
||||||
|
echo "$(foo) bar" # Command expansion
|
||||||
|
echo "foo bar" # Tried to use parentheses for grouping or function invocation
|
||||||
|
```
|
||||||
|
|
||||||
|
### Rationale:
|
||||||
|
|
||||||
|
ShellCheck expected an ordinary shell word but found an opening parenthesis instead.
|
||||||
|
|
||||||
|
Determine what you intended the parenthesis to do and rewrite accordingly. Common issues include:
|
||||||
|
|
||||||
|
* Wanting them to be literal, as in `echo (FAIL) Some tests failed`. In this case, it requires quoting.
|
||||||
|
* Wanting command expansion, as in `echo Today is (date)`. Add the missing `$`: `echo "Today is $(date)"`
|
||||||
|
* Adding parentheses because other languages need them in that context, such as `foo (bar, 42)` to call a function. This should be `foo bar 42`. Also, shells do not support tuples or passing arrays as single parameters.
|
||||||
|
|
||||||
|
### Exceptions:
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
### Related resources:
|
||||||
|
|
||||||
|
* Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!
|
Reference in New Issue
Block a user