题
什么是$的意思!在外壳或shell脚本?我想了解它有像下面的脚本。
local@usr> a=1
local@usr> echo $a
1
local@usr> echo $!a
a
据打印可变后。是不是所有的是什么?什么是我们有其他的$ x选项?几个我所知道的$$,$ *,$?如果任何人都可以点我一个很好的来源,这将是有帮助的。顺便说一句,这是Sun OS 5.8,KSH。
解决方案
在各种$…
变量击手册被描述一>。根据手册$!
扩展为背景展开的最后进程的PID。参见:
$ echo "Foo"
Foo
$ echo $!
$ true&
[1] 67064
$ echo $!
67064
[1]+ Done true
在ksh
似乎做同样的。
其他提示
从我的系统上ksh
手册页:
${!vname} Expands to the name of the variable referred to by vname. This will be vname except when vname is a name reference.
有关你所要求的外壳,KSH,使用的KSH手册和读取这样:
参数替换,点击 一个参数是一个标识符,一个或多个数字,或任何的 字符*,@,#, - ?!,$,以及
显然,这些都是$ *,$ @ $#$?$接受的选项 - ,$$和$!点击 更可以被包括在将来。
有关的参数$!从手动:
“!”最后背景命令的进程数调用。
如果你启动一个后台进程,像sleep 60 &
,那么就会出现这样处理的处理数量,参数$!将打印其编号。
$ sleep 60 &
[1] 12329
$ echo "$!"
12329
如果存在没有执行后台进程(壳开始时为),则exansion是空的。它有一个空值。
$ ksh -c 'echo $!'
如果有一个后台进程,它会扩展到这样的过程的PID:
$ ksh -c 'sleep 30 & echo $!'
42586
这就是为什么echo $!a
扩大到a
。这是因为不存在PID来报告:
$ ksh -c 'echo $!a'
a
其他炮弹可能有扩展的不同(通常很相似)名单(只有一个$和一个下一个字符一个参数)。结果
例如,bash的认识到这一点*@#?-$!0_
为“特殊参数”。搜索的标题为“3.4.2特殊参数” Bash的手册。
特殊参数,点击 外壳专门对待几个参数。
它给出最后backgroundjob或背景功能的进程ID 请通过以下
此链接http://www.well.ox.ac.uk/~johnb/comp/unix/ksh.html#specvar
!在UNIX参考运营商,虽然它不是这个名字叫。
它总是指母亲过程。试着输入:在vi,它把你命令提示和可以执行像往常一样的命令,直到退出命令。
!在SQLPLUS还执行从命令提示该命令。尝试这种在sqlplus
SQL>!LS ---这使文件在矿井当前目录列表。
$! - 显然给出当前/最新进程的进程ID