Shell变量名使用的特殊字符 [转]

来源:互联网 发布:笔记本的mac地址在哪里 编辑:程序博客网 时间:2024/04/29 13:18

Shell变量名使用的特殊字符 [转]

$# 传送给命令Shell的参数个数
$- 在Shell启动或使用set命令时提供选项
$? 上一条命令执行后返回的值
$$ 当前shell的进程号
$! 上一个子进程的进程号
$@ 所有的参数,每个都用双括号括起
$* 所有参数,用双括号括起
$n 位置参数值,n表示位置
$0 当前shell名 

$1..$9 第N个参数

实例
我在公司使用tcl/tk脚本进行编程,但在unix或linux环境中并不能保证每次tcl的解释器都被安装在同一个目录下,如/bin,所以为了程序不至于每次移植时都要修改第一句的#!/bin/tclsh到相应的安装目录,由于sh安装的目录相对固定,故采用以下方法:

#!/bin/sh
#become a dmh_wish script /
  exec dmh_wish -notk -f 
"$0" "$@"
  
......


第一句 #!/bin/sh 使文件被sh解释器解释
第二句 为注释,不执行
第三句 $0指当前shell名,#@为所有参数,所以这句使文件再次被tcl/tk的解释器解释运行。这次运行时,第一句"#!/bin/sh" 被tcl/tk解释器作为注释,不予执行;第二句也为注释,但由于其最后有一个"/",故根据tcl的语法规则,第三句语句被当作和第二句为同一命令,故也为注释,不予执行;这样就不会再次执行该文件,而是继续执行随后的tcl代码。

原创粉丝点击