
题主你好,
前提: 我们知道每个进程运行后,系统都会分配给其一个id号,这个id号和进程是关联的,我们可以通过 *** 作该id来实现 *** 作对应进程的目的,如通过id杀死进程等.
$!很多人解释为后台运行的最后一个进程的id号(我觉得解释为最近一次后台运行的id号更容易理解). 举个例子说一下吧,这样更直观一点.
我们先准备一个简单的脚本1.sh, 里面内容很简单,就是睡眠100秒:
下面我们在后台运行这个脚本,看一下$!的输出结果:
从上图可以看出, 脚本运行后,系统分配给它的进程id是54821, 后面我们连续输出三次$!,得到的结果是一样的,都是54821. 因为1.sh这个脚本就是我们最近一次后台运行的脚本,所以此时无论输出多少次$!结果都是一样的.
-----
接下来, 我们再运行一个内容同1.sh相同的2.sh:
可以看到, $!的输出结果变为了54860,不再是上面的54821. 因为此时2.sh是我们最近一次后台运行的脚本,因此,$!结果变为了54860.
=====
希望可以帮到题主, 欢迎追问.
$ 在linux里是用来给变量命令的,例如$JAVA_HOME,是指JAVA_HOME的环境变量。
echo $JAVA_HOME 可以在linux终端输出jdk的home目录。
在Shell 脚本中向脚本传递参数也会用到$,例如脚本内获取参数的格式为:$n,n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推。
实例-向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名:
#!/bin/bash
Shell 传递参数实例!"
echo "执行的文件名:$0"
echo "第一个参数为:$1"
echo "第二个参数为:$2"
echo "第三个参数为:$3"
扩展资料
另外$还可以配合几个特殊字符用来处理参数:
1、$#:传递到脚本的参数个数。
2、$* :以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
3、$$:脚本运行的当前进程ID号 。
4、$!:后台运行的最后一个进程的ID号。
5、$@:与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
6、$-:显示Shell使用的当前选项,与set命令功能相同。
7、$? :显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
首先要明确$符号用在什么地方,使用在不同的地方,其所代表的定义也就不同。比如在bash里$符号表示当前用户为普通用户;在bash脚本里。$开头表示变量。
举例说明,下面是一些特殊的变量:
$# 表示参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 表示所有参数,并且所有参数都是独立的
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)