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