Shell - 5

#!/bin/sh

在学习Shell脚本的时候,我们经常会遇到这一句

而这一句表示的就是脚本解释器所使用的类型,这里用的就是sh型


通常我们如果进行一个脚本操作,想知道一个确切的当前路径,该如何实现呢?

参考:

http://blog.csdn.net/leoleocmm/article/details/17410427

cd `dirname $0`;echo "当前目录:"`pwd`

这样就能输出了当前的绝对路径

这里非常注意到,这么神奇的效果居然那么简单,其实大有乾坤啦。

解析:

1.你必须注意到 ' '  和 ` ` 这两个差之甚远的符号

http://blog.csdn.net/miyatang/article/details/8077123      

(单引号、 双引号,反引号(``)的区别及各种括号的区别)

可以知道 ` `其实就是$()这种管道操作,现在当前帮你做了一次,而 dirname 命令非常好用 : dirname path

2.而$0我们可以看这个:

http://www.cnblogs.com/fhefh/archive/2011/04/15/2017613.html

(linux中shell变量$#,$@,$0,$1,$2的含义解释)

表示当前的shell脚本的文件名字,但是dirname $0会发生什么奇妙的化学反应呢?其实网上一查一大把,我们在脚本验证下:

#!/bin/sh

echo `dirname $0`;

这个时候,很多人肯定想当然,嘿,当然组合一起输出的是当前的路径啦,例如:/Users/luxiangting/Desktop

我们来看看结果:


坑爹啊,怎么是这么一点咧,看看后面的pwd,嘻嘻,这时候想想就恍然大悟了吧

原来dirname $0产生的化学反应的结果是一个当前目录,而且是相对路径的写法,所以是一点  .  

而pwd就是表示绝对路径的意思啦



除了这种方式,还有别的方式吗?当然有的,当我们甚至要把脚本的名称也输出的时候,我们可以这样:

filename=$(basename "$0")
commond=`pwd`/${filename}

echo ${filename}
echo ${commond}

参考:basename命令,特别basename "0"的用法

http://blog.csdn.net/shh110/article/details/6521586

就可以懂了




这样一来,逻辑关系就非常明了了吧?我们先cd到当前的目录以至于保证绝对性,然后输出绝对的路径,搞掂~

而我们经常将这种作为脚本操作的一种习惯,先输出操作的路径,查看是否正确,下篇会讲解,输出操作的时间~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值