1. 倒引号`、双引号"" 、单引号’’
`,被倒引号括起来的内容, 表示里面执行的是命令。比如 `dirname $0`, 就表示需要执行dirname $0这个命令。
“” ,被双引号括起来的内容, 里面出现$ (美元号)表示取变量名, `(倒引号)表示执行命令,\(转义号)表示转义,其余的才表示字符串。
‘’, 被单引号括起来的内容,里面所有的都表示串, 包括上面所说的 三个特殊字符。
在命令行状态下,单纯执行cd `dirname $0` 是毫无意义的,因为它返回当前路径“.”。cd `dirname $0`命令写在脚本文件里才有作用,它返回这个脚本文件所在的路径,并可以根据这个路径定位所要运行程序的相对位置(绝对位置除外)。
2. 实例
- $0:当前Shell程序的文件名
- dirname $0,获取当前Shell程序的路径
- cd `dirname $0`,进入当前Shell程序的目录
在/home/admin/test/下新建test.sh内容如下:
#!/bin/bash
basedir=$(
cd $(dirname $0)
pwd
)
echo $basedir
然后返回到/home/admin/执行
cd /home/admin/test/
chmod +x test.sh
./test.sh
运行结果:
/home/admin/test
这样就可以知道一些与脚本一起部署的文件位置了,只要知道相对位置就可以根据这个目录来定位,而可以不用关心绝对位置。这样脚本的可移植性就提高了,如果是部署脚本,扔到任何一台服务器,都可以执行。