CS 279 - Week 10 Lecture 2 - 2022-10-26

TODAY WE WILL
*   announcements/reminders
*   continuing with Bash arrays
*   demo of the BASH_REMATCH array (holds matches to
    regular expression subexpressions...!)
*   prep for next class

*   hey! Chapter 27 in the "Advanced Bash-Scripting Guide"
    is about arrays!

*   reminder:
    ${arrayname[*]}    # all of the items in the array

    ${!arrayname[*]}   # all of the indexes in the array

    ${#arrayname[*]}   # number of items in the array

    ${#arrayname[index]}   # length of the item with index index

*   see linux-journal-ex script!

====
*    ${arr[*]}
     ${arr[@]}

     ...behave the SAME for unquoted and no-blanks contents.

     BUT -- their behavior VARIES when some of the content
     contains blanks, and these ARE quoted...

     *   see: Bash script quoted-play

====
*   an array Bash sets up that you can access:
    BASH_REMATCH array

*   we know:
    =~ is an operator that can handle regular expressions

    if [[ $string =~ a.*b ]]

    *   when you are using THIS =~ operator,
        if there are ( ), subexpressions, IN the RE,
	then every substring which is matched by the subexpression
	    can be accessed from the BASH_REMATCH array

        *   looks like:
	    ${BASH_REMATCH[0]} contains the matched substring overall,
	    ${BASH_REMATCH[1]} contains the matched 1st subexpression,
	    ${BASH_REMATCH[2]} contains the matched 2nd subexpression, etc.

    *   see Bash scripts rematch-play and clicker-rematch