命令替换
在bash中,$( )与` `(反引号)都是用来作命令替换的。
命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行

[python@master2 shell]$ echo today is $(date "+%Y-%m-%d")
today is 2019-03-04
[python@master2 shell]$ echo today is `date "+%Y-%m-%d"`
today is 2019-03-04

$( )与`` 在操作上,这两者都是达到相应的效果,但是建议使用$( ),理由如下:
``很容易与''搞混乱,尤其对初学者来说,而$( )比较直观。
最后,$( )的弊端是,并不是所有的类unix系统都支持这种方式,但反引号是肯定支持的。

[python@master2 shell]$  echo Linux `echo Shell `echo today is `date "+%Y-%m-%d"```
Linux Shellecho today is 2019-03-04
[python@master2 shell]$  
[python@master2 shell]$ echo Linux `echo Shell $(echo today is $(date "+%Y-%m-%d"))`
Linux Shell today is 2019-03-04
[python@master2 shell]$  
[python@master2 shell]$ echo Linux $(echo Shell $(echo today is $(date "+%Y-%m-%d")))
Linux Shell today is 2019-03-04

${ }变量替换

一般情况下,$var与${var}是没有区别的,但是用${ }会比较精确的界定变量名称的范围
[python@master2 shell]$ A=Hello
[python@master2 shell]$ echo $A
Hello
[python@master2 shell]$ echo $AB    #表示变量AB

[python@master2 shell]$
[python@master2 shell]$ echo ${A}B  #表示变量A后连接着B
HelloB

取路径、文件名、后缀

#  是去掉左边(在键盘上 # 在 $ 之左边)
% 是去掉右边(在键盘上 % 在 $ 之右边)
单一符号是最小匹配;两个符号是最大匹配
*  是用来匹配不要的字符,也就是想要去掉的那部分
还有指定字符分隔号,与*配合,决定取哪部分

[python@master2 shell]$ file=/dir1/dir2/dir3/my.file.txt

[python@master2 shell]$ echo ${file#*/}       一个#匹配第一个/左边的不要
dir1/dir2/dir3/my.file.txt

[python@master2 shell]$ echo ${file##*/}     两个#匹配最后一个/左边的不要
my.file.txt

[python@master2 shell]$ echo ${file%/*}     %最后一个/及其右边的所有字符
/dir1/dir2/dir3

[python@master2 shell]$ echo ${file%%/*}   拿掉第一个/及其右边的字符串  (空)

数组

A="a b c def" # 定义字符串

A=(a b c def) # 定义字符数组

$(( ))与整数运算

[python@master2 shell]$ echo $((2*3))
6
[python@master2 shell]$ a=5;b=7;c=2
[python@master2 shell]$ echo $((a+b*c))
19
[python@master2 shell]$ echo $(($a+$b*$c))
19

(())重定义变量值

[python@master2 shell]$  a=5;b=7
[python@master2 shell]$  ((a++))
[python@master2 shell]$ echo $a
6
[python@master2 shell]$ ((a--));echo $a
5
[python@master2 shell]$ ((a<b));echo $?
0
[python@master2 shell]$  ((a>b));echo $?
1

随机推荐

  1. C# WinForm设置窗口无边框、窗口可移动、窗口显示在屏幕中央、控件去边框

    1)窗口去除边框 在组件属性中FormBorderStyle设为None 2)窗口随着鼠标移动而动 添加引用using System.Runtime.InteropServices; 在初始化控件{I ...

  2. PCL基础

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=264 许可 建议每一个文件包含一个描述代码作者的许可,这对于用户了解使用该代 ...

  3. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-2.中大型公司里面项目开发流程讲解

    笔记 2.中大型公司里面项目开发流程讲解     简介:讲解一个项目如何从零到上线,经历过怎样的步骤和流程                  1.一个中大型项目的开发流程,从需求调研到项目上线    ...

  4. 小D课堂 - 新版本微服务springcloud+Docker教程_4-04 高级篇幅之服务间调用之负载均衡策略调整实战

    笔记 4.高级篇幅之服务间调用之负载均衡策略调整实战     简介:实战调整默认负载均衡策略实战 自定义负载均衡策略:http://cloud.spring.io/spring-cloud-stati ...

  5. 根据规则去掉List 对象数组中的重复元素

    package container.main; import java.util.ArrayList; import java.util.Comparator; import java.util.Li ...

  6. Java Unsigned Bytes

    Having had to use unsigned bytes for the first time, I also had to learn how Java references these d ...

  7. Python 线程----线程方法,线程事件,线程队列,线程池,GIL锁,协程,Greenlet

    主要内容: 线程的一些其他方法 线程事件 线程队列 线程池 GIL锁 协程 Greenlet Gevent 一. 线程(threading)的一些其他方法 from threading import ...

  8. 分类并查集[noi2001 食物链]

    题目链接:http://cogs.pro:8081/cogs/problem/problem.php?pid=pxNJzxVPU 题目有三种动物,A吃B,B吃C,C吃A 即B是A的食物,A是B的天敌, ...

  9. eclipse 如何从Gitee.com克隆工程到本地,并运行

    1.再项目资源管理器里选择导入,导入 2.在导入向导中选择Git,选择来自Git的项目 3.选克隆URL 4.输入URL 和用户密码,点击下一步 4.下一步 5.选择保存路径 6.选择下一步,自动导入 ...

  10. nRF5 SDK Bootloader and DFU moudles(3)

    DFU控制点特性用于控制DFU过程的状态. 通过写入该特征来请求所有DFU程序. 标记过程结束的响应将作为通知收到. BLE传输 Transfer of an init packet DFU控制器首先 ...