题主你好,
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的岳阳网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
前提: 我们知道每个进程运行后,系统都会分配给其一个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表示没有错误,其他任何值表明有错误。
命令提示符
“$在linux里是命令提示符的意思。 对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell(外壳)命令和Linux命令
linux中的$即“命令提示符”就是你可以一在后面输入命令的,命令提示符前面可能提示当前用户的一些信息,在linux下会提示用户当前目录以及当前用户。
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个。关于Linux命令的详细介绍可查询“Linux命令大全”。
美元符加字符串是引用变量值,而美元符加数字表示命令行参数。
比如:
bash$ ./hello.sh build test脚本中$0的值就是。/hello.sh,$1的值是build,$2的值是test。
bash$ list.sh -sh --debug /home/user。脚本中$0的值就是list.sh,$1的值是-sh,$2的值是--debug,$3的值是/home/user。
$0 这个程式的执行名字。
$n 这个程式的第n个参数值,n=1..9。
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数。
$$ 这个程式的PID(脚本运行的当前进程ID号)。
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)。
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)。
$- 显示shell使用的当前选项,与set命令功能相同。
$@ 跟$*类似,但是可以当作数组用。