1[
2 (string)
3 (raw_string)
4 (heredoc_body)
5 (heredoc_start)
6 (heredoc_end)
7 (ansi_c_string)
8 (word)
9] @string
10
11(variable_name) @variable
12
13[
14 "case"
15 "do"
16 "done"
17 "elif"
18 "else"
19 "esac"
20 "export"
21 "fi"
22 "for"
23 "function"
24 "if"
25 "in"
26 "select"
27 "then"
28 "unset"
29 "until"
30 "while"
31 "local"
32 "declare"
33] @keyword
34
35(comment) @comment
36
37(function_definition name: (word) @function)
38(command_name (word) @function)
39
40[
41 (file_descriptor)
42 (number)
43] @number
44
45(regex) @string.regex
46
47[
48 (command_substitution)
49 (process_substitution)
50 (expansion)
51] @embedded
52
53
54[
55 "$"
56 "&&"
57 ">"
58 "<<"
59 ">>"
60 ">&"
61 ">&-"
62 "<"
63 "|"
64 ":"
65 "//"
66 "/"
67 "%"
68 "%%"
69 "#"
70 "##"
71 "="
72 "=="
73] @operator
74
75(test_operator) @keyword.operator
76
77[
78 ";"
79] @punctuation.delimiter
80
81[
82 "("
83 ")"
84 "{"
85 "}"
86 "["
87 "]"
88] @punctuation.bracket
89
90(simple_expansion
91 "$" @punctuation.special)
92(expansion
93 "${" @punctuation.special
94 "}" @punctuation.special) @embedded
95
96(command_substitution
97 "$(" @punctuation.special
98 ")" @punctuation.special)
99
100(
101 (command (_) @constant)
102 (#match? @constant "^-")
103)