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

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

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之间不能有空格


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值