这一篇博客会介绍“!”符号在不同情境下的使用

1、重复执行先前命令

2、逻辑非

3、作为shell内部变量

4、变量的间接引用

一、重复执行先前命令: !

在bash中,为了重复执行先前命令,可以利用感叹号“!”引用机制实现。

“!”表示引用命令历史缓冲区的或文件中的命令。

常用的“!”命令使用及说明:

⑴ !  表示引用命令历史缓冲区或文件中的命令

⑵ !!  重复执行刚才执行过的命令

⑶ !N  重复执行命令历史缓冲区或文件中序号为N的命令

⑷ !-N  重复执行从当前命令位置开始倒计数的第N个命令

⑸ !string  重复执行最近一个执行,以给定字符string为起始字符串的命令

解释:以string为起始的命令,基本就是命令行的一部分,注意“起始”。

⑹ !?string[?]  重复执行最近一个执行,包含给定字符串string的命令

⑺ !!string  引用前一个命令,附加给定字符串string,然后执行。

⑻ !N string  引用第N个命令,附加给定的字符串string,然后执行。

⑼ !#  引用迄今为止已经输入的所有字符

⑽ !$  引用前一个命令的最后一个参数

⑾ !!:[g]s/old/new/  以指定字符串new替换命令中出现的第一个或全部字符串old。是替换第一个还是全部,要看带不带[g]选项。然后执行。

⑿ ^old^new^  以给定字符串new替换命令中第一个出现的字符串old。并执行。

上面这些对历史命令的查找操作,与之前的在管道那一节中对后台作业的查找操作和格式很像,可以进行一下对比:点击打开链接。

第二种:作为逻辑非“!”

1、用于test命令查找时的取逻辑非操作,test命令支持的其它逻辑操作:点击打开链接,查看里面的第四大点。

2、通配符中的给定范围取反操作。通配符的使用具体可以看:点击打开链接

第三种:作为shell内部变量

$!  表示最近运行的一个后台进程的PID信息。shell内部变量看链接:

第四种:变量的间接引用

⑴ 脚本举例test.sh:

var1=a

var2=var1

现在,如何通过变量var2,引用字符var1对应的变量var1,的值a字符呢?

⑵ 一般情况下:

var1=a

var2=$var1       #对变量var1的引用

这种情况是非常普遍的,直接用变量替换的形式,让两变量var1和var2直接相等。

相比于例子2,例子1中,是想通过一个字符,来引入其对应的一个变量的值,可以通过两种方式。

① 可以用到eval命令:

格式:eval var3=\$$var2,

这样就可以对变量var2的值var1字符串,对应的变量进行引用。

不过有简单的方式:

② echo ${!var2}

这样就直接对变量var2中的值var1,对应变量进行了引用。

注意:!var2之间不能有空格

shell脚本【符号6】“!”重复执行先前命令/非/内部变量相关推荐

  1. Bash shell脚本打印出正在执行的命令

    默认情况下,bash脚本不会打印执行的每个命令,这个有时候不太方面. 如下的方法可以让bash脚本打印出执行的命令: 1) 在脚本里添加 set -v 或者 #!/bin/bash -v 以加 set ...

  2. 为什么.bat脚本不断重复执行同一命令

    为什么.bat脚本不断重复执行同一命令 如果自己写的.bat脚本文件的名称与系统已有的cmd命令重复,会导致该命令在屏幕不断重复显示,得不到脚本想要的结果. 解决方法: 修改.bat脚本文件名称,保证 ...

  3. Linux shell脚本的建立与执行

      在进行linux测试时编写脚本是必不可少的.最近经常使用Linux,感觉太频繁地敲击键盘有些累了,于是想到了Shell脚本.可以把太多的命令写成一个脚本,这样每次执行一遍  shell文件,就可以 ...

  4. Linux战地日记—shell脚本的建立与执行

    shell脚本的建立与执行 第一步:创建文件 通过vi/vim编辑器 第二步:三种执行方式 1.输入定向到shell脚本. $ bash < ex1 2.以脚本名作为bash参数,其一般形式是: ...

  5. php 程序重复执行命令,重复执行bat命令.bat

    重复执行bat命令.bat :start ping -n 5 127.0.0.1 >nul start cmd /c "cd/d C:\Users\Administrator\Desk ...

  6. java运行gogo shell,shell脚本转换成二进制文件之shc命令安装使用

    摘要: 1. 本文shc命令CentOS6和CentOS7都可使用 2. 安装shc命令依赖gcc编译器,如果没有请安装 shc(generic shell script compiler)是一个专业 ...

  7. linux sh脚本 while,Linux shell脚本使用while循环执行ssh的注意事项

    原标题:Linux shell脚本使用while循环执行ssh的注意事项 如果要使用ssh批量登录到其它系统上操作时,我们会采用循环的方式去处理,那么这里存在一个巨大坑,你必须要小心了. 一.场景还原 ...

  8. linux脚本定时拷贝文件,使用Linux shell脚本实现FTP定时执行批量下载指定文件

    使用FTP定时批量下载指定文件的shell脚本,具体实例介绍如下所示: 1.目标FTP服务器地址 #FTP服务器地址 ip=10.19.15.23 2.FTP账号和密码 u=账号 p=密码 3.使用m ...

  9. linux怎么重复命令,Linux系统中重复执行历史命令的方法有哪些?

    今天小编要跟大家分享的文章是关于Linux系统中重复执行历史命令的方法有哪些?各位正在从事Linux运维工作的小伙伴们,如果要执行一条或多条之前输过的指令,要怎么处理?很多人会想到使用上下箭头去翻查历 ...

最新文章

  1. 用 Python 可以实现侧脸转正脸?我也要试一下!
  2. python 贪吃蛇小游戏代码_10分钟再用Python编写贪吃蛇小游戏
  3. Ardino基础教程 21_最简单最快控制LCD1602
  4. python字典教程:添加与删除
  5. 搜索其他计算机IP地址的格式,怎么查找局域网其他电脑的ip地址的方法
  6. 状态码301 302
  7. jetty启动源码分析
  8. Leetcode--144. 二叉树的前序遍历(迭代递归)
  9. Python学习心路历程
  10. Java 分布式框架面试题合集
  11. 一直弹出adb已停止工作(远程主机强迫关闭现有的连接)的最简单完美解决法
  12. c语言双人贪吃蛇-基于图形库实现
  13. 《计算机操作系统》(第四版)大全总结
  14. 微信小程序实现视频功能(二):视频列表与下载
  15. 中控H10考勤机管理员密码破解
  16. 【12c】新特性:Oracle 12c Temporal Validity 时间有效性
  17. Vulnhub靶机系列:SecTalks: BNE0x03 - Simple
  18. ADODB.Stream 错误 #x27;800a0bb9#x27; 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
  19. 读取U盘 PID,VID,SN等信息
  20. Mybatis 映射文件

热门文章

  1. 爱数发布AnyShare 3.5,打造私有云存储的BOX
  2. 贴片按键开关_一键控制全屋家居产品?想实现全屋智能,先安装一套智能开关吧...
  3. [Split The Tree][dfs序+树状数组求区间数的种数]
  4. CCD/CMOS的成像原理(内含rgb元件如何分布)
  5. matlab可以当作eclipse,如何将MATLAB与Eclipse集成
  6. 计算机专业相关的创意产品,10款惊艳的创意产品,脑洞大就是任性!
  7. [渝粤教育] 潍坊职业学院 花卉栽培 参考 资料
  8. 城市规划GIS技术应用指南(CH10)
  9. Java之~ 存储表情图EmojiUtil工具类
  10. python:画五星红旗(源码+效果图)