eshell: Dollars Expansion

 
 3.1 Dollars Expansion
 =====================
 
 Eshell has different ‘$’ expansion syntax from other shells.  There are
 some similarities, but don’t let these lull you into a false sense of
 familiarity.
 
 ‘$var’
      Expands to the value bound to ‘var’.  This is the main way to use
      variables in command invocations.
 
 ‘$#var’
      Expands to the length of the value bound to ‘var’.  Raises an error
      if the value is not a sequence (SeeSequences (elisp)Sequences
      Arrays Vectors.).
 
 ‘$(lisp)’
      Expands to the result of evaluating the S-expression ‘(lisp)’.  On
      its own, this is identical to just ‘(lisp)’, but with the ‘$’, it
      can be used in a string, such as ‘/some/path/$(lisp).txt’.
 
 ‘${command}’
      Returns the output of ‘command’, which can be any valid Eshell
      command invocation, and may even contain expansions.
 
 ‘$var[i]’
      Expands to the ‘i’th element of the value bound to ‘var’.  If the
      value is a string, it will be split at whitespace to make it a
      list.  Again, raises an error if the value is not a sequence.
 
 ‘$var[: i]’
      As above, but now splitting occurs at the colon character.
 
 ‘$var[: i j]’
      As above, but instead of returning just a string, it now returns a
      list of two strings.  If the result is being interpolated into a
      larger string, this list will be flattened into one big string,
      with each element separated by a space.
 
 ‘$var["\\\\" i]’
      Separate on backslash characters.  Actually, the first argument –
      if it doesn’t have the form of a number, or a plain variable name –
      can be any regular expression.  So to split on numbers, use
      ‘$var["[0-9]+" 10 20]’.
 
 ‘$var[hello]’
      Calls ‘assoc’ on ‘var’ with ‘"hello"’, expecting it to be an alist
      (SeeAssociation Lists (elisp)Association List Type.).
 
 ‘$#var[hello]’
      Returns the length of the cdr of the element of ‘var’ who car is
      equal to ‘"hello"’.