shell脚本学习。
常见的脚本学习:
### DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
上面的脚本是非常常见的一句。什么意思呢?
<!--more-->
看下面的分解脚本:
{% highlight HTML %}
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo "$DIR"
S0="${BASH_SOURCE[0]}"
DIRNAME0="$( dirname "$S0")"
DIR0="$( cd "$DIRNAME0" && pwd)"
echo "$S0"
echo "$DIRNAME0"
echo "$DIR0"
{% endhighlight %}
copy上面的脚本生成test.sh,将sh文件放到了DeskTop桌面目录。我当前在`~`目录里,执行了命令./DeskTop/test.sh可以看到输出:
* /Users/vokie/Desktop
* ./Desktop/test.sh
* ./Desktop
* /Users/vokie/Desktop
分析一下:
* S0的变量值是从当前目录指向test.sh文件的相对位置。
* DIRNAME0 是获取test.sh文件相对位置的相对目录。(dirname命令是获取某个文件的相对目录)
* DIR0 是获取test.sh文件的绝对路径。(首先是用cd命令,进入test.sh文件所在的相对目录,然后执行pwd,输出当前目录的绝对路径。需要注意`&&`的含义:当前面的命令成立时,才执行后面的命令。否则直接不执行后面的命令了,所以只有当cd进入了当前脚本的路径,才去获取当前脚本的绝对路径。)
故上面那么一长串的脚本,其实就是:获取当前执行脚本所在位置的绝对路径。非常实用。赞一个!