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