linux shell内建命令declare

Posted longchang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux shell内建命令declare相关的知识,希望对你有一定的参考价值。

详细参考

man bash中的SHELL BUILTIN COMMANDS

declare [-aAfFgilnrtux] [-p] [name[=value] ...]
       typeset [-aAfFgilnrtux] [-p] [name[=value] ...]
              Declare  variables  and/or give them attributes.  If no names are given then display the values of variables.  The -p option will display the attributes and values of each
              name.  When -p is used with name arguments, additional options, other than -f and -F, are ignored.  When -p is  supplied  without  name  arguments,  it  will  display  the
              attributes  and  values  of  all  variables  having the attributes specified by the additional options.  If no other options are supplied with -p, declare will display the
              attributes and values of all shell variables.  The -f option will restrict the display to shell functions.  The -F option inhibits the  display  of  function  definitions;
              only  the  function  name and attributes are printed.  If the extdebug shell option is enabled using shopt, the source file name and line number where each name is defined
              are displayed as well.  The -F option implies -f.  The -g option forces variables to be created or modified at the global scope, even when declare is executed in  a  shell
              function.   It  is  ignored  in  all  other  cases.   The  following  options can be used to restrict output to variables with the specified attribute or to give variables
              attributes:
              -a     Each name is an indexed array variable (see Arrays above).
              -A     Each name is an associative array variable (see Arrays above).
              -f     Use function names only.
              -i     The variable is treated as an integer; arithmetic evaluation (see ARITHMETIC EVALUATION above) is performed when the variable is assigned a value.
              -l     When the variable is assigned a value, all upper-case characters are converted to lower-case.  The upper-case attribute is disabled.
              -n     Give each name the nameref attribute, making it a name reference to another variable.  That other variable is defined by the value of name.  All references, assign‐
                     ments,  and  attribute modifications to name, except those using or changing the -n attribute itself, are performed on the variable referenced by name‘s value.  The
                     nameref attribute cannot be applied to array variables.
              -r     Make names readonly.  These names cannot then be assigned values by subsequent assignment statements or unset.
              -t     Give each name the trace attribute.  Traced functions inherit the DEBUG and RETURN traps from the calling shell.  The trace attribute has  no  special  meaning  for
                     variables.
              -u     When the variable is assigned a value, all lower-case characters are converted to upper-case.  The lower-case attribute is disabled.
              -x     Mark names for export to subsequent commands via the environment.

              Using  `+‘  instead  of  `-‘  turns off the attribute instead, with the exceptions that +a may not be used to destroy an array variable and +r will not remove the readonly
              attribute.  When used in a function, declare and typeset make each name local, as with the local command, unless the -g option is supplied.  If a variable name is followed
              by  =value, the value of the variable is set to value.  When using -a or -A and the compound assignment syntax to create array variables, additional attributes do not take
              effect until subsequent assignments.  The return value is 0 unless an invalid option is encountered, an attempt is made to define  a  function  using  ``-f  foo=bar‘‘,  an
              attempt  is  made  to  assign  a  value to a readonly variable, an attempt is made to assign a value to an array variable without using the compound assignment syntax (see
              Arrays above), one of the names is not a valid shell variable name, an attempt is made to turn off readonly status for a readonly variable, an attempt is made to turn  off
              array status for an array variable, or an attempt is made to display a non-existent function with -f.

 

以上是关于linux shell内建命令declare的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令(6/28)——declare/typeset命令

Linux上天之路(十六)之Shell编程一

Linux Shell的父子关系及内建命令

Linux编程 10 (shell外部命令与内建命令,alias ,type命令)

Shell所有内建命令

Linux - Bash shell的功能;内建命令type