$(dirname $0)

查看公司的java部署脚本,发现第一行使用了$(dirname $0)这个写法,由于不是很了解这个写法的作用,于是百度下用法。

作用

在linux中,dirname命令可以返回文件所在的目录。$0 表示当前动行的命令名。

因此此写法的作用为: 切换到 脚本 所在的目录

在shel脚本中,$的作用有很多,下面是网上抄录的一些功能

命令替换

在bash中,$( )(反引号)都是用来作命令替换的。

[root@instance-nri61g29 ~]# echo today is $(date "+%Y-%m-%d")
today is 2019-05-25
[root@instance-nri61g29 ~]# echo today is `date "+%Y-%m-%d"`
today is 2019-05-25

建议使用$( ),因为``很容易搞混。

${ }变量替换

一般情况下,$var${var}是没有区别的,但是用${ }会比较精确的界定变量名称的范围

[root@instance-nri61g29 ~]# A=hello
[root@instance-nri61g29 ~]# echo $AB

[root@instance-nri61g29 ~]# echo ${A}B
helloB

$0,$?,$!等的特殊用法

$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
∗ 所 有 参 数 列 表 。 如 " * 所有参数列表。如" "*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
@ 所 有 参 数 列 表 。 如 " @ 所有参数列表。如" @"@“用「”」括起来的情况、以"$1" “ 2 " … " 2" … " 2""n” 的形式输出所有参数。
$#
添加到Shell的参数个数
$0
Shell本身的文件名
1 ~ 1~ 1n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

你可能感兴趣的:(linux)