Linux重新学习--shell script--变量与运算符

在其位,谋其职。之前从来没有认真的学习过shell script,以至于每次有任务都要重新翻查手册,深感麻烦,不如此次彻底认真的学习一下,也省去了之后的很多麻烦。就以这篇文章开始吧。

本系列是主要参照《shell 脚本学习指南》这本书,感觉这本书写的很不错,推荐一下。


一.变量

1.变量的赋值

学习一门新的编程语言首先要搞清楚变量这个东东,在shell中,变量都是以字符串的形式来赋值的,除非有特殊的说明,并且 = 号两侧不能有空格,否则shell将会把你的变量名识别成command。例如

var=hello

echo $var

输出:hello


但是如果你写成了

var = hello

echo $var

则会输出  var: command not found.


上述是直接 = 赋值,这种方式会将var原来的值覆盖掉, 还有一种是 += 赋值, 这种方式将会将后来的值连接在先前的值后面。例如:

var=hello

var+=world

echo $var

输出: helloworld


既然是字符串那么完全可以将好几个单词赋值给一个变量了,当然,多个单词的意思是单词之间有空格,那么这是必须将字符串使用引号 “” 括起来,不然又会被识别成命令啦。

var=“hello world”


2.四则运算

上一节我们知道了字符串的赋值方式,很简单,没有空格就直接 = 赋值即可,有空格就用“” 引起来, 那么shell可不可以像整形数据一样做四则运算呢,当然可以,但是需要使用双括号  (())括起来才行。例如

var=1

((var=var+1))

var=$((var+2))

上面两种方式都是可以的。


3. Others

变量可以被设置成为只读的,这对于要使用常量的场景非常合适, 方式:readonly var

关于变量就先说这么多,随着以后的学习我会继续补充。


二. 运算符

1.替换运算符,这一类运算符用以探测一个变量的值是否存在等等情况,常用的有此类运算符有

   1) ${varname:-word} :注意{ }, 如果varname的值非null,则返回varname的值,否则就返回word, 但是并没有将word的值赋值给varname

   2) ${varnmae:=word} :注意{ }, 如果varname的值非null,则返回varnmae的值,否则将word的值赋给varname,然后返回其值,varname依然有值啦

   3) ${varnmae:?message}:注意{ }, 如果varname的值非null,则返回varname的值,否则显示varname:message并退出当前的脚本

   4) ${varname:+word}:与1)对应,如果varname的值非null,则返回word的值,否则就返回varnamae的值

2. 模式匹配运算符

   此类运算符将会删除匹配成功的字符串, #,##用于删除开头处匹配成功的字符串; %,%%用于删除结尾处匹配成功的字符串

   ${variable#pattern} , 从开头处开始,删除最短的匹配

   ${variable##pattern}, 从开头处开始,删除最长的匹配

   ${variable%pattern}, 从结尾处开始,删除最短的匹配

   ${variable%%pattern},从结尾处开始,删除最长的匹配

 3. 计算字符串的长度

   ${#characters}


三. 特殊变量

在shell script的阅读中会经常遇到各类奇奇怪怪的符号$# $@等,让人看了很晕,这一节我们就剖析一下这些奇形怪状到底是什么东东。

1.参数相关

首先需要明确的是这些符号是对传递给脚本或者函数的参数有效的,这些符号的学习主要是方便对于位置参数的处理。

1). $#: 表示传递的参数的总数,这个总数是可以改变的,这就用到了shift这个命令,shift命令用于移开第一个参数,移开之后参数的个数当然就减一了。

2). $*,$@: 这两个符号的作用相同,可以表示传递来的所有参数,实际使用时是这样子的:

for var in $*

do

   echo $var

done

3). "$*":将所有的参数当做一个整体字符串,即 “$1 $2 $3”

4). "$@" : 将每一个参数当做一个独立的字符串,即“$1” "$2"


2.内置的特殊变量

有点多,懒得打字啦,直接截图上传




PS:

关于参数列表,除了使用 $*外,还可以使用看起来非常专业的getopts。getopts的模式: getopts f:val opt, 第一个选项是传入的参数选项,其中的冒号表示还有参数该选项后面还有参数,并且该参数被放置到OPTARG中,而选项则会放在getopts的第二个选项中;另外还有OPTIND,用来放置下一个要处理的参数的索引。值得注意的是,getopts会自动的将选项前面的 - 去掉,所以强烈建议使用这种方式来处理参数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值