Shell之declare定义变量

实验环境

 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core) 

命令说明

declare 与 typeset 命令都是bash的内建命令(builtin commands),两者所实现的功能完全一样,用来设置变量值和属性。
typeset现已弃用,由declare进行替代,可查看帮助手册:

~]# help typeset
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...
    Set variable values and attributes.
    Obsolete.  See `help declare‘.
~]# help declare
declare: declare [-aAfFgilrtux] [-p] [name[=value] ...]
    Set variable values and attributes.

命令选项

typeset 和 declare的选项参数是通用的,下面以declare进行说明:

Declare variables and give them attributes. If no NAMEs are given, display the attributes and values of all variables.
declare [-aAfFgilrtux] [-p] [name[=value] ...]

选项:

-f [name]:列出之前由用户在脚本中定义的函数名称和函数体;
-F [name]:仅列出自定义函数名称;
-g name:在shell函数中可创建全局变量;
-p [name]:显示指定变量的属性和值;
-a name:声明变量为普通数组;
-A name:声明变量为关联数组(支持索引下标为字符串);
-i name :将变量定义为整数型(求值结果仅为整数,否则显示为0);
-r [name[=value]] 或 readonly name:将变量定义为只读(不可修改和删除);
-x name[=value] 或 export name[=value]:将变量设置为环境变量;

PS:使用 + 可取消定义的变量类型,如取消整数变量定义declare +i name。

unset name:取消变量的属性和值,只读变量除外。
Unset values and attributes of shell variables and functions.

使用示例

#!/bin/bash

echo "Set a custom function - func1"
echo
func1 ()
{
  echo This is a function.
}

echo "Lists the function body."
echo "============================="
declare -f
echo
echo "Lists the function name."
echo "============================="
declare -F       

echo

declare -i var1   # var1 is an integer.
var1=2367
echo "var1 declared as $var1"
var1=var1+1       # Integer declaration eliminates the need for ‘let‘.
echo "var1 incremented by 1 is $var1."
# Attempt to change variable declared as integer.
echo "Attempting to change var1 to floating point value, 2367.1."
var1=2367.1       # Results in error message, with no change to variable.
echo "var1 is still $var1"

echo

declare -r var2=13.36         # ‘declare‘ permits setting a variable property
                              #+ and simultaneously assigning it a value.
echo "var2 declared as $var2" # Attempt to change readonly variable.
echo
echo "Change the var2‘s values to 13.37"
var2=13.37                    # Generates error message, and exit from script.

echo "var2 is still $var2"    # This line will not execute.

exit 0                        # Script will not exit here.

参考链接

declare Advanced Bash-Scripting Guide

原文地址:http://blog.51cto.com/firelong/2059087

时间: 2024-11-03 16:22:12

Shell之declare定义变量的相关文章

shell 脚本declare声明变量

linux bash shell之declare declare或typeset内建命令(它们是完全相同的)可以用来限定变量的属性.这是在某些编程语言中使用的定义类型不严格的方式.命令declare是bash版本2之后才有的.命令typeset也可以在ksh脚本中运行. declare/typeset 选项 -r 只读 #!/bin/bash declare -r haha=leaf echo $haha haha=what echo what is $haha ? 运行结果如下,可见声明后再也

SQL*Plus中替换变量与定义变量

替换变量 SQL*Plus中的替换变量又叫替代变量,它一般用来临时存储相关数据:在SQL语句之间传递值.一般使用&或&&前缀来指定替换变量. 关于使用替换变量,一般是利用其创建通用的脚本或达到和用户交换目的.如下所示: 例如,我需要查看表的相关信息,如果不使用替换变量,每次查询我都要修改脚本.非常不便,如果使用替换变量,我们可以将下面脚本存放在tab.sql脚本中,每次运行时,只需要输入替换变量的值就可以了. COL LOGGING FOR A7;   COL OWNER FOR

linux shell自定义函数(定义、返回值、变量作用域)介绍

http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带function fun() 定义,也可以

转 linux shell自定义函数(定义、返回值、变量作用域)介绍

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带function fun() 定义,也可以直接fun() 定义,不带任何参数. 2.参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. retu

Linux Shell 自定义函数(定义、返回值、变量作用域)介绍

定义Shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1. 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数. 2. 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. return后跟数值n(0-255). 示例(test_fun.sh): #!/bin/sh fSum 3 2; fSum() { ec

MySQL存储过程中declare和set定义变量的区别

在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅在类中生效.即只在存储过程中的begin和end之间生效. 2.@set定义的变量,叫做会话变量,也叫用户定义变量,在整个会话中都起作用(比如某个应用的一个连接过程中),即这个变量可以在被调用的存储过程或者代码之间共享数据.如何理解呢?可以看下面这个简单例子,很好理解. (1)先执行下面脚本,创建一

shell语法—shell 定义变量及调用变量

可执行文件开头第一行一般我们会指定用什么解释器来执行该文件比如shell脚本的文件开头一般会加#!/bin/sh 运行shell 是会遇到三种变量 1.局部变量,在脚本或命令中定义,仅在当前shell实例中有效,其他shell 启动的程序不能访问局部变量. 2.环境变量,所以的程序,包括shell启动的程序,都能当问环境变量,有些程序需要环境变量来保证其正常运行,必要的时候shell脚本也可以定义环境变量. 3.shell变量,是有shell程序设置的特殊变量,shell变量中有一部分是环境变量

shell-2.shell定义变量

Shell 变量 ${#var} 可计算出变量值的长度: 1.变量的定义 变量名="赋值给变量的内容"  (字符串)变量名='赋值给变量的内容'  (字符串)变量名=数值                (数值) [注意]:变量名和等号之间不能有空格 2.变量名的命名规范·首个字符必须为字母(a-z,A-Z).·不能使用标点符号.·中间不能有空格,可以使用下划线(_),最好不要用特殊字符,可读性差.·不要使用bash里的关键字 3.[实例]name="yuanji"a

mysql -- 存储过程中 declare 和 set 定义变量的区别

mysql存储过程中,定义变量有两种方式:1.使用set或select直接赋值,变量名以 @ 开头.例如:set @var=1;可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量. 2.以 DECLARE 关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如:DECLARE var1  INT DEFAULT 0;  主要用在存储过程中,或者是给存储传参数中. 两者的区别是:在调用存储过程时,以DECLARE声明的变量都会被初始化为 NULL.而会话变量(即@开头的变量)则不