700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > shell脚本【符号6】“!”重复执行先前命令/非/内部变量

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

时间:2021-05-02 08:21:11

相关推荐

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

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

1、重复执行先前命令

2、逻辑非

3、作为shell内部变量

4、变量的间接引用

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

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

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

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

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

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

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

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

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

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

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

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

⑻ !Nstring 引用第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之间不能有空格

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。