1、单引号 、双引号、反引号的区别

单引号:忽略所有特殊字符

双引号:忽略大部分特殊字符($  `等字符除外)

[root@tlinux shell]# echo '*'
*
[root@tlinux shell]# echo * 输出目录下所有文件
02.sh 03.sh o1hello.sh text.sh

[root@tlinux shell]# x=*
[root@tlinux shell]# echo $x
02.sh 03.sh o1hello.sh text.sh
[root@tlinux shell]# echo "$x"
*
[root@tlinux shell]# echo '$x' 忽略所有特殊字符
$x

反引号:命令替换(将一个命令的标准输出插入到命令的任何位置)

$(): 同样是命令替换

命令替换可以嵌套(如果使用反引号,则内部的反引号必须用反斜杠来转义)  :echo  `basename \`pwd\``       echo $(basename $(pwd))

basename 命令:求路径中最后一项名称

dirname 命令:求路径中路径前面的名称

[root@tlinux shell]# echo `pwd`
/shell
[root@tlinux shell]# echo $(pwd)
/shell
[root@tlinux shell]# basename /hh/aa
aa
[root@tlinux shell]# dirname /hh/aa/bb
/hh/aa
\[root@tlinux shell]# basename `pwd`
shell
[root@tlinux shell]# dirname `pwd`
/
[root@tlinux shell]# echo `basename \`pwd\``
shell
[root@tlinux shell]# echo $(basename $(pwd))
shell

2、算术运算符

基本算术运算符与C语言一模一样

算术扩展:$[] 

[root@tlinux shell]# n=5;echo $[$n+1]
6
[root@tlinux shell]# echo n+1
n+1
[root@tlinux shell]# echo $n+1
5+1

$(())等价于$[]

[root@tlinux shell]# echo $(($n+2))
7
[root@tlinux shell]# echo $(($n*2))
10

(()) :整体表达式 不可赋值   是一个独立的语句

[root@tlinux shell]# ((n+=1))
[root@tlinux shell]# echo $n
6
[root@tlinux shell]# echo ((n+=1))
bash: syntax error near unexpected token `('
[root@tlinux shell]# r=((n+=1))
bash: syntax error near unexpected token `('
[root@tlinux shell]# r=$[$n+1]
[root@tlinux shell]# echo $r
7

expr  :符号两边一定要有空格

[root@tlinux shell]# expr 4 + 5
9
[root@tlinux shell]# r= `expr 4 * 5`
expr: syntax error
[root@tlinux shell]# r=`expr 4 \* 5` *对shell有特殊含义 echo $*
[root@tlinux shell]# echo $r
20

let  是shell内置命令

[root@tlinux shell]# let n=n+_1
[root@tlinux shell]#
[root@tlinux shell]# let n=n+1
[root@tlinux shell]# echo $n
6
[root@tlinux shell]# let "n= n+ 1"
[root@tlinux shell]# echo $n
7
[root@tlinux shell]# let n=n +1
[root@tlinux shell]# echo $n
7
[root@tlinux shell]# let n= n +1
bash: let: n=: syntax error: operand expected (error token is "=")
[root@tlinux shell]# let "n= n+1"
[root@tlinux shell]# echo $n
8

shell编程之算术扩展(引号、命令替换、算术扩展)的更多相关文章

  1. Linux Shell编程(21)——复杂命令

    更高级的用户命令find-exec COMMAND \;在每一个find 匹配到的文件执行 COMMAND 命令. 命令序列以 ; 结束( ";" 是 转义符 以保证 shell ...

  2. shell编程:定义简单标准命令集

    shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...

  3. shell编程必须要掌握的命令-xargs

    一,说xargs命令前,说一下什么是shell编程 什么是shell编程呢,说白了就是按一定的规则把各种命令组织起来,完成一定的事情.纯属个人理解,哈哈.不管是交互式的shell,还是非交互的shel ...

  4. shell编程基础(七): 处理文件命令sed与awk

    一.sed(以行为单位处理文件) sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑 ...

  5. Linux编程 23 shell编程(结构化条件判断 命令if -then , if-then ... elif-then ...else,if test)

    一.概述 在上一篇里讲到了shell脚本,shell按照命令在脚本中出现的顺序依次进行处理,对于顺序操作已经足够了,但许多程序要求对shell脚本中的命令加入一些逻辑流程控制,这样的命令通常叫做 结构 ...

  6. linux shell编程学习笔记(二) --- grep命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  7. Shell 编程-常见的文件处理命令

    touch 命令 touch命令用于创建空文件,例如有时应用程序希望在它们写入数据之前,某个日志文件就已经存在.这时可用touch命令创建一个空文件:touch test1:touch命令还可以用来改 ...

  8. 3.shell编程-文件查找之find命令

    3.1.语法格式 find [路劲][选项][操作] 选项参数对照表 3.2.-name 查找/etc/目录下以.conf结尾的文件 find /etc/ -name "*.conf&quo ...

  9. shell编程 之 test命令

    shell编程里的测试test命令基本可以分为3种数据类型,每种都不一样.个人更倾向于理解为条件语句的写法规则,就是test加条件加判断语句. 1 数值类型 基本可以分为6个判断:-eq等于,-ne不 ...

  10. Shell 编程基础之括号的作用

    一.小括号() 单小括号 命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必 ...

随机推荐

  1. 多测师讲解 _接口自动化框架设计_高级讲师肖sir

    背景:因为把传入接口参数.组建测试用例.执行测试用例和发送报告,都放入一个.py文件对于接口的使用非常不灵活就需要数据和接口业务进行分离让代码之间的 耦合性降低.和实现接口的分层管理,所以需要对代码进 ...

  2. vscode设置snippets

    自动添加文件描述信息 "File Comments": { "prefix": "filecomments", "body&quo ...

  3. 为了运行十年前的代码,程序员们甚至翻出了一台 1977 年的 Apple II

    "Hello, World!" 46 年过去,这段被世人熟知的代码仍散发着历久弥新的魅力,和它一起登场的 C 语言,如今也成长为世界几大通行编程语言之一,为互联网世界乃至现实世界都 ...

  4. 拦截导弹简单版——线性dp

    题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  5. Ubuntu服务安装

    一.ifconfig命令安装 sudo apt install net-tools 二.ssh服务安装 sudo apt-get install openssh-server netstat -ltn ...

  6. 【Azure 环境】连接到微软云Azure中国区 By VS 2019, VS Code, Powershell

    问题情形 最近,在使用最新的VS Code插件连接到中国区的Azure时候,出现了依旧是global版的登录连接.这个问题是当前Azure Account插件最新版的问题,可以使用V0.8.11版本登 ...

  7. Redis分布式锁及分区

    以下内容是翻译的官网文档RedLock和分区部分,可以简单了解分布式锁在redis如何实现及其方式 redis分区的方法 redis实现的分布式锁RedLock算法,分布式锁,即在多个master上获 ...

  8. Spring框架中获取连接池常用的四种方式

    1:DBCP数据源 DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池,所 ...

  9. Redis---09Redis集群(二)

    一.集群的Jedis开发: 1.导入jar包 jedis-2.8.1.jar commons-pool2-2.4.2.jar 2.代码 public class TestCluster { publi ...

  10. CPU上下文

    CPU上下文 包括CPU寄存器和程序计数器(Program Counter,PC). CPU寄存器,是CPU内置的容量小.但速度极快的内存. 程序计数器,是用来存储CPU正在执行的指令位置.或者即将执 ...