Linux里面$!作用是什么?

如题所述

题主你好,

   前提: 我们知道每个进程运行后,系统都会分配给其一个id号,这个id号和进程是关联的,我们可以通过操作该id来实现操作对应进程的目的,如通过id杀死进程等.

    $!很多人解释为后台运行的最后一个进程的id号(我觉得解释为最近一次后台运行的id号更容易理解). 举个例子说一下吧,这样更直观一点.

我们先准备一个简单的脚本1.sh, 里面内容很简单,就是睡眠100秒:

下面我们在后台运行这个脚本,看一下$!的输出结果:

从上图可以看出, 脚本运行后,系统分配给它的进程id是54821, 后面我们连续输出三次$!,得到的结果是一样的,都是54821.  因为1.sh这个脚本就是我们最近一次后台运行的脚本,所以此时无论输出多少次$!结果都是一样的.

-----

接下来, 我们再运行一个内容同1.sh相同的2.sh:

可以看到, $!的输出结果变为了54860,不再是上面的54821. 因为此时2.sh是我们最近一次后台运行的脚本,因此,$!结果变为了54860.

=====

希望可以帮到题主, 欢迎追问.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-10-17
1.显示脚本参数($0、$?、$*、$@、$#、$$、$!)(本质上属于变量替换)

2. 获取变量与环境变量的值,查询命令《Linux就该这么学》
第2个回答  2021-10-16
有两种作用:
(1) [redhat@station5 ~]$ 此处是指普通用户的提示符,root为#。
(2) 在脚本中是指申明变量
第3个回答  2021-10-22
有两种解释:
(1) [redhat@station5 ~]$ 此处是指普通用户的提示符,root为#
(2) 在脚本中是指申明变量,如:
#!/bin/bash
for ip in $( seq 1 254) (此处是申明数字变化范围1到254)
do
ping -c1 -w1 192.168.0.$ip &>/dev/null && echo station$ip is up || echo station$ip is down | grep up
done 命令介绍请查看'linux命令大全'
第4个回答  2021-10-16
有两种解释:
(1)[redhat@station5~]$此处是指普通用户的提示符,root为#
(2)在脚本中是指申明变量,如:
#!/bin/bash
foripin$(seq1254)(此处是申明数字变化范围1到254)
do
ping-c1-w1192.168.0.$ip&>/dev/null&&echostation$ipisup、、echostation$ipisdown、grepup
done
相似回答