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. Java第一课!

    public class Text { public static void main(String[] args) { int a=100; //赋值a=100 System.out.println ...

  2. 发布MeteoInfo Java 1.2.1

    主要增加了合并netCDF文件的功能.在不同时间netCDF文件合并时考虑了不同文件起始时间不同的情况.

  3. rs232转以太网转换器

    rs232转以太网转换器 rs232转网络ZLAN5103可以实现RS232/485/422和TCP/IP之间进行透明数据转发.方便地使得串口设备连接到以太网和Internet,实现串口设备的网络化升 ...

  4. 例题4-2 刽子手游戏(Hangman Judge, UVa 489)

    #include<stdio.h> #include<string.h> int ok ,no; int left ,chance; char s[20] ,s2[20]; v ...

  5. 【UNR #2】UOJ拯救计划

    UOJ小清新题表 题目内容 UOJ链接 题面太长了(其实是我懒得改LaTeX了) 一句话题意: 给出 \(n\) 个点和 \(m\) 条边,对其进行染色,共 \(k\) 种颜色,要求同一条边两点颜色不 ...

  6. 【9】进大厂必须掌握的面试题-DevOps面试

    Q1.DevOps和Agile之间的根本区别是什么? 下表中列出了两者之间的差异. 特征 DevOps--开发运维 Agile--敏捷 敏捷 开发和运营中的敏捷性 只有发展才能敏捷 流程/实践 涉及C ...

  7. centos8平台上php7.4的生产环境配置

    一,php错误与日志的配置 1,创建php的日志保存目录: [root@yjweb ~]# mkdir -p /data/logs/phplogs [root@yjweb ~]# chmod 777 ...

  8. 第十七章 DNS原理

    一.DNS的相关介绍 1.主机名与IP地址映射需求 1)IP地址难于记忆 2)能否用便于记忆的名字来映射IP地址? 2.hosts文件 1)hosts文件记录了主机名和IP地址的对应信息 2)host ...

  9. C++学习---栈的构建及操作

    一.顺序栈 #include <iostream> using namespace std; #define MAXSIZE 100 //栈的最大容量 typedef struct { i ...

  10. Mybatis项目搭建

    MyBatis是一个优秀的持久层框架.原生的jdbc操作存在大量的重复性代码(如注册驱动,创建连接,创建statement,结果集检测等).框架的作用就是把这些繁琐的代码封装. MyBatis通过XM ...