MySQL Shell 8.0
          The MySQL Shell provides global objects that expose different
          functionality, such as dba for
          InnoDB Cluster and InnoDB ReplicaSet management
          operations, util for the utility functions,
          and so on. Global objects provide functions which are called
          from the scripting modes in the MySQL Shell. In addition to
          the interactive MySQL Shell integration, you can use the
          command-line integration to call object functions directly
          from the terminal, enabling you to easily integrate with other
          tools.
        
When you use the APIs included with MySQL Shell in the interactive mode, the typical function syntax is as follows:
object.functionName(parameter1, parameter2, ..., parameterN)
The parameters define the order in which the data should be provided to the API function. In most cases, API functions expect the parameters in a specific data type, however there are a few exceptions where a specific parameter can handle multiple data types. The data types used for parameters in API functions can be one of the following:
Scalars: string, numbers, booleans, null
Lists
Dictionaries: key-value pairs where the key is a string
Objects
List parameters are typically restricted to contain elements of a pre-defined data type, for example a list of strings, however, there could be list parameters that support items of different data types.
          Dictionary parameters accept
          key-value
          pairs, where keys are strings. The
          value associated to a key is
          usually expected to be of a pre-defined data type. However,
          there might be cases where different data types are supported
          for values by the same key. Dictionary parameters can
          therefore be one of the following types:
        
A pre-defined set of keys-value pairs is allowed, in which case specifying keys not in the pre-defined set results in an error.
No pre-defined set of key-value pairs exists, the dictionary accepts any key
In other words, some dictionary parameters specify which keys are valid. For those parameters, attempting to use a key outside of that set results in an error. When no pre-defined set of values exists, any value of any data type can be used. Dictionary parameters that do not have a pre-defined list of keys, accept any key-value pair as long as the key is not in the pre-defined set of a different dictionary parameter.
To use the command-line integration to call API functions exposed by global objects without having to start an interactive session in the MySQL Shell you must provide the required data in the correct way. This includes defining the way an API function is called, as well as the way its parameters are mapped from command-line arguments to API arguments.
            Not all of the MySQL Shell functions are exposed by the
            command-line integration. For example a function such as
            dba.getCluster() relies on returning an
            object which is then used in further operations. Such
            operations are not exposed by the command-line integration.
          
Similarly, the MySQL Shell command-line integration does not support Objects as parameters. Any API function with a parameter of type object cannot be used with the command-line integration. The lifetime of the object is limited to the lifetime of the MySQL Shell invocation that created it. Since mysqlsh exits immediately after executing an object method through this API syntax, any objects received from or passed into an API call would immediately be out of scope. This should be considered while developing MySQL Shell Plugins that you want to expose with the command-line integration.
The general format to call a MySQL Shell API function from the command-line is:
$ mysqlsh [shell options] -- [shell_object]+object_function[anonymous_arguments|named arguments]*
Where:
              shell_object: specifies a
              global object with functions exposed for command-line
              usage. Supports nested objects in a list separated by
              spaces.
            
              object_function: specifies the
              API function of the last
              shell_object which should be
              executed.
            
              [anonymous_arguments|named
              arguments]*: specifies the arguments passed
              to the object_function call
            
For most of the available APIs a single object is required, for example:
$ mysqlsh -- shell status
          But for nested objects, the list of objects must be indicated.
          For example, to call a function exposed by
          shell.options, such as
          setPersist(optionName, value), use the
          syntax:
        
$ mysqlsh -- shell options set-persist defaultMode py
A similar situation might happen with nested objects defined in MySQL Shell Plugins.
The arguments you pass to functions can be divided into the following types:
              Anonymous Arguments: which are raw values provided to the
              command. For example, in the following call
              1, one and
              true are anonymous arguments:
            
$ mysqlsh -- object command 1 one true
              Named Arguments: which are key-value pairs provided in the
              form of --key=value. For example in the
              following call, --sample and
              --path are named arguments:
            
$ mysqlsh -- object command 1 one true --sample=3 --path=some/path
Given this division of arguments, the general format to call an API function from the command-line integration is:
$ mysqlsh [shell options] --objectcommand[anonymous arguments][named arguments]
          The order of any anonymous
          arguments is important as they are processed in
          a positional way. On the other hand, named
          arguments can appear anywhere as they are
          processed first and are associated to the corresponding
          parameter. Once named arguments are processed, the anonymous
          arguments are processed in a positional way.