关于bash获取路径问题---pwd和 dirname区别

来源:互联网 发布:飓风打印软件 编辑:程序博客网 时间:2024/05/20 22:38

本文用到的demo内容如下,建立test.sh脚本,将脚本改成可执行状态后运行:

</pre><pre name="code" class="csharp">#!/bin/bashecho `pwd`var=$(dirname $0)echo $varcd dirname1echo $varecho `pwd`exit~     


一、pwd和dirname

    1、pwd返回的是当前目录,“print name of current/working directory”,但并不一定是脚本存放的目录,如下所示,当在~/c-example路径下执行

  dirname1/dirname2/test.sh 

pwd得到结果为

<pre name="code" class="csharp">/home/maria/c-example

并不是脚本所在的路径

   

maria@maria:~/c-example/dirname1/dirname2$ lstest.shmaria@maria:~/c-example/dirname1/dirname2$ cd ../..maria@maria:~/c-example$ dirname1/dirname2/test.sh /home/maria/c-exampledirname1/dirname2dirname1/dirname2/home/maria/c-example/dirname1


    2、dirname $0在命令行状态下返回" . ",而在脚本中返回的是脚本所在的路径,且是脚本所在路径相对于命令执行时的路径,如下当在~/c-example路径下执行

   

dirname1/dirname2/test.sh 
      

得到dirname $0结果为


<pre name="code" class="csharp"><span style="white-space:pre"></span>dirname1/dirname2

是test.sh相对于命令执行时的相对路径

       3、二者的区别可由如上示例看到:pwd会随着cd等指令而变化,但最开始由dirname $0得到的相对路径是一个固定参数。


二、关于“” ‘’ ``的区别(摘自http://blog.163.com/wb_zhaoyuwei/blog/static/183075439201181553840490/)

【`】,学名叫“倒引号”, 如果被“倒引号”括起来,  表示里面需要执行的是命令。
比如 `dirname $0`,  就表示需要执行   dirname $0  这个命令

【“”】 , 被双引号括起来的内容, 里面 出现  $ (美元号: 表示取变量名)  `(倒引号: 表示执行命令)   \(转义号: 表示转义),   其余的才表示字符串。
【’‘】,  被单引号括起来的内容, 里面所有的都表示串, 包括上面所说的  三个特殊字符。

0 0
原创粉丝点击