curl(1) -fsSL "${current_terraform_url}" | sed(1) -n '/href=".*"/p' | awk(1posix) -F'["]' '{print $10}'
transfer a URL
-f, --fail
       (HTTP)  Fail  silently  (no  output at all) on server errors. This is mostly done to better enable
       scripts etc to better deal with failed attempts. In normal cases  when  a  HTTP  server  fails  to
       deliver  a  document,  it  returns an HTML document stating so (which often also describes why and
       more). This flag will prevent curl from outputting that and return error 22.

       This method is not fail-safe and there are occasions where non-successful response codes will slip
       through, especially when authentication is involved (response codes 401 and 407).
-s, --silent
       Silent or quiet mode. Don't show progress meter or error messages.  Makes Curl mute.
-S, --show-error
       When used with -s it makes curl show an error message if it fails.
-L, --location
       (HTTP/HTTPS) If the server reports that the requested page  has  moved  to  a  different  location
       (indicated  with  a Location: header and a 3XX response code), this option will make curl redo the
       request on the new place. If used together with -i, --include or  -I,  --head,  headers  from  all
       requested pages will be shown. When authentication is used, curl only sends its credentials to the
       initial host. If a redirect takes curl to a different host, it won't  be  able  to  intercept  the
       user+password.  See  also  --location-trusted  on  how to change this. You can limit the amount of
       redirects to follow by using the --max-redirs option.

       When curl follows a redirect and the request is not a plain GET (for example POST or PUT), it will
       do  the  following  request  with a GET if the HTTP response was 301, 302, or 303. If the response
       code was any other 3xx code, curl will re-send the following request  using  the  same  unmodified
    A  pipeline is a sequence of one or more commands separated by one of the control operators | or |&.  The
    format for a pipeline is:

           [time [-p]] [ ! ] command [ [||&] command2 ... ]

    The standard output of command is connected  via  a  pipe  to  the  standard  input  of  command2.   This
    connection  is performed before any redirections specified by the command (see REDIRECTION below).  If |&
    is used, the standard error of command is connected to command2's standard input through the pipe; it  is
    shorthand  for  2>&1  |.   This  implicit  redirection  of  the  standard  error  is  performed after any
    redirections specified by the command.

    The return status of a pipeline is the exit status of the last command, unless  the  pipefail  option  is
    enabled.   If  pipefail  is  enabled,  the  pipeline's return status is the value of the last (rightmost)
    command to exit with a non-zero status, or zero if all commands exit successfully.  If the reserved  word
    !   precedes  a  pipeline, the exit status of that pipeline is the logical negation of the exit status as
    described above.  The shell waits for all commands in the pipeline to terminate before returning a value.

    If the time reserved word precedes a pipeline, the elapsed as well as user and system  time  consumed  by
    its execution are reported when the pipeline terminates.  The -p option changes the output format to that
    specified by POSIX.  When the shell is in posix mode, it does not recognize time as a  reserved  word  if
    the  next  token begins with a `-'.  The TIMEFORMAT variable may be set to a format string that specifies
    how the timing information should be displayed; see the description of TIMEFORMAT under  Shell  Variables

    When the shell is in posix mode, time may be followed by a newline.  In this case, the shell displays the
    total user and system time consumed by the shell and its children.  The TIMEFORMAT variable may  be  used
    to specify the format of the time information.

    Each command in a pipeline is executed as a separate process (i.e., in a subshell).
stream editor for filtering and transforming text
-n, --quiet, --silent

       suppress automatic printing of pattern space
If no -e, --expression, -f, or --file option is given, then the first non-option argument is taken as the
sed script to interpret.  All remaining arguments are names  of  input  files;  if  no  input  files  are
specified, then the standard input is read.
pattern scanning and processing language
       Define  the  input  field separator to be the extended regular expression ERE, before any input is
       read; see Regular Expressions .
       If no -f option is specified, the first operand to awk shall be the text of the awk  program.  The
       application shall supply the program operand as a single argument to awk. If the text does not end
       in a <newline>, awk shall interpret the text as if it did.

       Either of the following two types of argument can be intermixed:

       A pathname of a file that contains the input to be read, which  is  matched  against  the  set  of
       patterns  in  the  program.  If  no file operands are specified, or if a file operand is '-' , the
       standard input shall be used.

       An operand that begins with an underscore or alphabetic character from the portable character  set
       (see  the  table  in  the  Base  Definitions volume of IEEE Std 1003.1-2001, Section 6.1, Portable
       Character Set), followed by a sequence of underscores, digits, and alphabetics from  the  portable
       character  set,  followed  by the '=' character, shall specify a variable assignment rather than a
       pathname. The characters before the '=' represent the name of an awk variable; if that name is  an
       awk  reserved  word  (see  Grammar ) the behavior is undefined. The characters following the equal
       sign shall be interpreted as if they appeared in the  awk  program  preceded  and  followed  by  a
       double-quote ( ' )' character, as a STRING token (see Grammar ), except that if the last character
       is an unescaped backslash, it shall be interpreted as a literal backslash rather than as the first
       character  of  the  sequence  "\"" . The variable shall be assigned the value of that STRING token
       and, if appropriate, shall be considered a numeric string (see Expressions in awk ), the  variable
       shall  also be assigned its numeric value. Each such variable assignment shall occur just prior to
       the processing of the following file, if any. Thus, an assignment before the first  file  argument
       shall  be  executed  after  the  BEGIN  actions  (if any), while an assignment after the last file
       argument shall occur before the END actions (if any). If there are no file arguments,  assignments
       shall be executed before processing the standard input.
source manpages: curlsedawk