title: Casing arrow keys in bash
body: <p>Is it possible to case arrow keys in a bash script to run a certain set of commands if the up/left arrow keys are pressed, and a certain set if the down/right arrow keys are pressed? I am trying to have a way to switch between users quickly by using the arrow keys while it is displaying the data, using this script to read the data from.</p>
  
  <pre><code>function main()  # The main function that controls the execution of all other functions
  {
    mkdir -p ~/usertmp  # Make a new temporary user directory if it doesn't exist
    touch ~/last_seen_output.txt  # Create the output file if it doesn't exist
    cat /dev/null &gt; ~/last_seen_output.txt  # Make sure that the output file is empty
    gather  # Call the "gather" function
    total=$((`wc -l ~/usertmp/user_list.txt|awk '{print $1}'`-1))  # Calculate the total amount of lines and subtract 1 from the result
    echo Current Time: `date +%s` &gt; ~/last_seen_output.txt  # Print the current time to the output file for later reference
    echo "" &gt; ~/last_seen_output.txt  # Print a blank line to the output file
      if [ $log -eq 1 ]
        then
          # If it is enabled, then delete the old backups to prevent errors
          while [ $line_number -le $total ]
            do
  
              line_number=$((line_number+1))  # Add 1 to the current line number
              calculate # Call the "calculate" function
              hms  # Call the "hms" function to convert the time in seconds to normal time
              log
          done
        else
          while [ $line_number -le $total ]
            do
              line_number=$((line_number+1))  # Add 1 to the current line number
              calculate # Call the "calculate" function
              hms  # Call the "hms" function to convert the time in seconds to normal time
              echo "Displaying, please hit enter to view the users one by one."
              read  # Wait for user input
              if [ "$log_while_displaying" ]
                then
                  log
                  display
                else
                  display
              fi
          done
      fi
  }
  </code></pre>
  
  <p><a href="https://github.com/jbondhus/last-seen/blob/master/last-seen.sh" rel="noreferrer">https://github.com/jbondhus/last-seen/blob/master/last-seen.sh</a> is the complete script.</p>
  
  <p>The read command commented as "wait for user input" is the command that you hit enter to go to the next user for. Basically, what this script does it list users and the time that has passed since each user logged in. I am trying to switch between each user being displayed by using the arrow keys. I figured that it might be possible to use a case statement to case the key input. To reiterate my point, I'm not sure if this is possible. If it isn't, can anyone think of another way to do this?</p>