linux declare命令菜蔬,linux declare命令

命令描述

declare或typeset内建命令(它们是完全相同的)可以用来限定(或宣告变量的属性)变量的属性.这是在某些编程语言中使用的定义类型不严格的方式。命令declare是bash版本2之后才有的。命令typeset也可以在ksh脚本中运行。

declare为shell指令,在第一种语法中可用来声明变量并设置变量的属性([rix]即为变量的属性只读,整数运算,环境变量),在第二种语法中可用来显示shell函数。若不加上任何参数,则会显示全部shell变量与函数(与执行set指令的效果相同)。

无论是环境变量还是自定义变量,在使用、变量=变量内容、export 变量=变量内容、亦或是 declare -x 变量=变量内容,在退出系统后,再次登陆时,所设置的变量将消失.

在默认的情况下,bash对于变量有几个基本的定义:

1、变量类型默认为“字符串”就像sum=100+200+300,所以若不指定变量类型,者100+200+300为一个“字符串”而不是计算式

2、bash环境中的数值运算,默认最多仅能到达整数类型,所以1/3结果是零(只能做整数运算)。

命令语法

declare [+/-][rxi][变量名称=设置值]或declare -f

参数

+/-:-可用来指定变量的属性,+则是取消变量所设置的属性。

-f:仅显示函数。

-a:将后面的variable定义为数组(array)

-r:将变量设置为只读readonly,该变量不可被更改内容,也不能unset

-x:指定的变量会成为环境变量,可供shell以外的程序来使用,用法与export一样,就是将后面的variable变成环境变量

-i:[设置值]可以是数值,字符串或运算式,将后面的variable定义为整数数字(integer)

-p:可以单独列出变量的属性类型

1、参数-i的使用

点击(此处)折叠或打开

[root@RHEL6 ~]#sum=100+300+50

[root@RHEL6 ~]# echo$sum

100+300+50 //怎么没有帮助我们计算?因为这是文字类型的变量属性(默认是文字类型的变量属性,加-i属性为整数运行类型,如果不能整数运算结果将是0)

[root@RHEL6 ~]#declare-i sum=100+300+50

[root@RHEL6 ~]# echo$sum

450

[root@RHEL6 ~]#declare-i sum=100+300-50

[root@RHEL6 ~]# echo$sum

350

[root@RHEL6 ~]#declare-i sum=(100+300)/50

[root@RHEL6 ~]# echo$sum

8

[root@RHEL6 ~]#

[root@RHEL6 ~]#declare-i sum=1/3

[root@RHEL6 ~]# echo$sum

0

[root@RHEL6 ~]#

因为变量sum不是整数变量,所以不会自动对表达式求值。也可以采用下面两个方式,运算数值结果,只是没有变量属性,属性值均为“空”

点击(此处)折叠或打开

[root@RHEL6~]#unset sum

[root@RHEL6~]#declare-p sum

-bash:declare:sum: notfound

[root@RHEL6~]#

[root@RHEL6~]#sum=$[100+300+50]

[root@RHEL6~]#declare-p sum

declare--sum="450"

[root@RHEL6~]#sum=$((100+300+50))

[root@RHEL6~]#declare-p sum

declare--sum="450"

[root@RHEL6~]#

2、参数-x的使用

点击(此处)折叠或打开

declare-x HISTSIZE="1000"命令与 export HISTSIZE="1000"是相同的,设置变量并将变量转换为环境变量

[root@RHEL6~]#HISTSIZE=1000//设置自定义变量HISTSIZE变量的内容为1000

[root@RHEL6~]# set |grep HISTSIZE//查找HISTSIZE变量

HISTSIZE=1000

[root@RHEL6~]#declare-x HISTSIZE="1001" //使用declare-x设置环境变量HISTSIZE的内容为1001,其实是覆盖了自定义变量HISTSIZE,并且HISTSIZE也同时变成了环境变量

[root@RHEL6~]# set |grep HISTSIZE//查询HISTSIZE变量内容的变化

HISTSIZE=1001

_=HISTSIZE=1001

[root@RHEL6~]#export HISTSIZE="1002" //使用export 设置环境变量HISTSIZE的内容为1002,其实是覆盖了由declare-x设置的变量HISTSIZE。

[root@RHEL6~]# set |grep HISTSIZE//查询HISTSZE变量内容的变化

HISTSIZE=1002

_=HISTSIZE

[root@RHEL6~]#

点击(此处)折叠或打开

[root@RHEL6~]#env|grep HISTSIZE//查看HISTSIZE环境变量、系统默认是1000

HISTSIZE=1000//变量值为1000

[root@RHEL6~]#unset HISTSIZE//取消变量

[root@RHEL6~]#env|grep HISTSIZE//再次查询HISTSIZE变量,发现已经没有了

[root@RHEL6~]#HISTSIZE="1000" //重新设置变量HISTSIZE的内容为1000

[root@RHEL6~]#env|grep HISTSIZE//在次查询HISTSIZE变量,发现env中并没有HISTSIZE变量,原来默认情况下HISTSIZE="1000"只是设置为自定义变量,而非环境变量,当然使用env查看环境变量的命令也就无法查到了。

[root@RHEL6~]# set |grep HISTSIZE//在set中查找HISTSIZE变量,发现以存在,原因是set命令是查找环境变量和自定义变量的命令

HISTSIZE=1000

[root@RHEL6~]#export HISTSIZE//将HISTSIZE变量使用export转化为环境变量

[root@RHEL6~]#env|grep HISTSIZE//再次查找,发现查找到内容

HISTSIZE=1000

3、参数-x -i合用

点击(此处)折叠或打开

[root@RHEL6~]#declare-ix sum=100+200+300//设置sum为环境变量并且可以是数值运算

[root@RHEL6~]#echo $sum//显示变量结果

600

[root@RHEL6~]#env|grep sum//在环境变量下查找sum变量

sum=600

[root@RHEL6~]#

4、参数-r的使用(readonly属性)

点击(此处)折叠或打开

[root@RHEL6 ~]#set|grep sum //查询是否有sum变量,发现没有,那么我们设置

[root@RHEL6 ~]#declare-xi sum=100+200+300 //设置sum为环境变量并且可以是数值运算

[root@RHEL6 ~]# echo$sum //显示变量结果

600

[root@RHEL6 ~]#env|grep sum //同样在环境变量中也能查看到sum变量

sum=600

[root@RHEL6 ~]#declare-r sum //设置sum为只读属性的变量

[root@RHEL6 ~]#declare-p sum //-p可以单独列出变量的属性类型

declare-irx sum="600"//属性为-irx,如果将变量设置为“只读”,通常得要注销在登录才能复原该变量的类型了。

[root@RHEL6 ~]#sum=111 //更改sum变量内容,发现sum为自读变量

-bash:sum:readonly variable

[root@RHEL6 ~]#unset sum //取消变量sum,发现也无法取消

-bash:unset:sum:cannot unset:readonly variable

[root@RHEL6 ~]#declare+r sum //使用+参数取消r参数,发现也无法取消,(注销系统可以取消变量的只读属性)

-bash:declare:sum:readonly variable

[root@RHEL6 ~]#

5、参数+-的使用,相反的-号赋予某属性,而+号是取消某属性,属性有[rix]三种

点击(此处)折叠或打开

[root@RHEL6~]#declare-ix sum=100+200+400//直接设置成环境变量

[root@RHEL6~]#echo $sum

700

[root@RHEL6~]#declare-p sum//查看变量属性为-ix

declare-ix sum="700"

[root@RHEL6~]#declare+x sum//取消x属性

[root@RHEL6~]#declare-p sum//查看变量属性为-i

declare-i sum="700"

[root@RHEL6~]#env|grep sum//同样在环境变量中也查不到sum变量了因为他取消了-x属性

[root@RHEL6~]#declare-x sum//赋予x属性

[root@RHEL6~]#env|grep sum//env中可以查看到sum变量了。

sum=700

6、数组(array)变量类型即-a参数

声明数组变量(实际上,任何变量都可以当做数组来操作)数组(array)对写数值程序的程序员来说,可是不能错过学习的重点之一。那么如何设置数组的变量与内容呢?bash里头,数组的设置方式是:

var[index]=content  //意思是说我有一个数组名为var,而这个数组内容为var[1]="small min",var[2]="big min",var[3]="nice min"等等,那个index就是一个数字,重点是[]来设置的。目前bash提供的是一维数组。

点击(此处)折叠或打开

[root@awake~]#names=Jack

[root@awake~]#names[1]=Bone

[root@awake~]#names[2]=Awake

[root@awake~]#echo $names//直接引用names,相当于引用names[0]

Jack

[root@awake~]#echo ${names[*]}

Jack Bone Awake

[root@awake~]#declare-p names//查看变量属性及内容

declare-a names='([0]="Jack" [1]="Bone" [2]="Awake")'

[root@awake~]#echo"${names},${names[1]},${names[2]}" //查看变量内容

Jack,Bone,Awake

[root@awake~]#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值