shell之变量

这篇文章主要是介绍shell的变量。主要有:用户创建的变量、关键字变量和变量属性三个方面的内容。

对于变量,默认是常量为大写,变量为小写或者大小写命名。变量名必须是字母或者下划线开头,不能是数字开头。在Bourne Again Shell中变量赋值直接是等于号

eg myvar=a;

等号两边没有空格,在TC Shell中是 set myvar = a。


1:首先是用户创建的变量:

1.1:参数替换

$ person=max    #赋值

max                   #打印的内容

然后我们看看接下来的命令

$ echo $person          #打印person

max                             #打印的内容,下面同理,$是输入命令的一行

$ echo   "$person"

max

$ echo '$person'

$person          #打印的结果就是$person,没有替换

$ echo \$person

$person         #打印的结果就是$person,没有替换

从上面的例子可以看出,双引号对于参数而言没有啥影响,单引号和\ 可以阻止参数被替换。


虽然双引号不能阻止参数被替换,但是他仍然有作用。

$ person1="max and min"

$ person2=max and min

这两句话是不同的,前者打印person1是max and min ,后者打印就会出错,因为无法解析后面的空格!

双引号的第二个特点就是在路径名的展开中了

1.2:路径名的展开

假设当前路径下有maxmemo max.txt两个文件

eg

$ memo=max*

$ echo  $"memo"  #命令,有双引号,打印memo

max*                  #输出结果

$ echo $memo 

maxmemo max.txt  #输出的结果是进行了匹配的

可以看到,不加双引号对路径名字进行了匹配。

当然对于这个取变量的语法,其实最严格的用法应该是${memo},某些场合也许要用到这种形式。

1.3:unset删除变量

$ unset person #删除person变量


2:变量属性

2.1 readonly只读属性

$ readonly person #对已经有的person进行属性变更,此后person的值不能改变。

2.2 declare和typeset:为变量赋予属性

这两个是相同意思和用法的两个命令。承接的属性有

-a    声明一个数组

-f   声明一个函数名变量

-i   声明一个int型变量

-r   只读,类似于readonly

-x   输出变量,也可用export

eg:

$ declare person=max

$ declare -r person2=min  #声明只读的person2

$ declare -rx person3=nick    #等同于 declare -r -x person3=nick或者declare -x -r person3=nick

$ declare -x person4  #全局变量,初始不用赋值,为空,可用于所有shell

$ declare +x person3    #person3不在是全局变量,仍然只读,+可以删除属性


3:关键字变量(不做详细说明)

关键字变量可以继承,这里不做详细的说明,只是列出大类,提供整体框架。

HOME:用户主目录

PATH:shell查找程序的路径

MAIL:保存电子邮件的地方

PS1:用户主提示符,可以更改用户命令提示符,一般前面是$,root运行时是#,还可以自定义为其它的

PS2:用户辅助提示符

PS3:菜单提示符

PS4:调试提示符

IFS:分隔输入字段,默认是空格,制表符和换行符,通过IFS命令还可以扩展为其它的。比如 IFS=":"则,冒号也成为一个分隔符。

CDPATH:扩大cd的范围。


以上就是shell中的变量的知识点。最重要的是掌握用户变量和属性的用法。对于关键字变量,一般用不上。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值