什么是$的意思!在外壳或shell脚本?我想了解它有像下面的脚本。

local@usr> a=1
local@usr> echo $a
1
local@usr> echo $!a
a

据打印可变后。是不是所有的是什么?什么是我们有其他的$ x选项?几个我所知道的$$,$ *,$?如果任何人都可以点我一个很好的来源,这将是有帮助的。顺便说一句,这是Sun OS 5.8,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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top