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)