Chinaunix

标题: 求解bash_porfile语句 [打印本页]

作者: hydRAnger    时间: 2010-07-23 18:02
标题: 求解bash_porfile语句
$ vi .bash_profile  

function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; }

加入这个可以让mkdircd实现mkdir和cd同时进行,但是求解cd后面那一大串参数怎么理解?
作者: blackold    时间: 2010-07-23 18:06
回复 1# hydRAnger

引用与参数展开。
作者: hydRAnger    时间: 2010-07-23 18:10
请问黑哥,能不能逐字符展开讲解下呢?
作者: blackold    时间: 2010-07-23 18:22
回复 3# hydRAnger

详细的没有办法讲了。大概说一下。

首先这是个函数,废话。

mkdirp -p "$@" #创建多个目录,如果成功,则执行eval。
eval cd "\"\$$#\"" 就是将工作目录改变到最后的一个目录。
作者: blackold    时间: 2010-07-23 18:23
LZ都走了,还讲什么?
作者: bbgg1983    时间: 2010-07-23 18:27
悲剧了
作者: saintdragon    时间: 2010-07-23 19:07
小黑继续讲呀!
楼主是代表广大人民群众提问的!
作者: wild_li    时间: 2010-07-23 20:08
黑哥一直无所不能.
作者: iori809    时间: 2010-07-23 20:08
回复 5# blackold


    太让黑哥伤心了~没事黑哥。走了LZ
还有我们陪着你
作者: hydRAnger    时间: 2010-07-24 00:10
回复 5# blackold

Sorry...下午有事被叫走了…~还是谢谢黑哥了,实在不好意思啊…
作者: hydRAnger    时间: 2010-07-24 00:18
回复 5# blackold

eval cd "\"\$$#\"" 就是将工作目录改变到最后的一个目录。

那个,再请教下,就是cd 后面这些参数是怎么断句的?cd "" 里面的那对“”是转义作为cd参数的一部分对吧?那之后\$$#这个又怎么理解呢?相当于cd $($#这个变量的值)这样?
作者: BangBull    时间: 2010-07-24 12:19
$# 为参数个数,,  \$$# , 为最后一个参数,  cd  \$$# 就是 cd 到就最一个了
作者: hydRAnger    时间: 2010-07-24 19:54
回复 12# BangBull

理解了,多谢赐教
作者: iori809    时间: 2010-07-25 09:31
回复 2# blackold


    黑哥我做了个测试
这个似乎是等$@等执行完了才判断后面的
相当于一个循环啊~而且得是前面的都成功了才行
黑哥千万不要伤心~我们会永远陪着你呵呵
作者: blackold    时间: 2010-07-26 09:39
回复 14# iori809


    没错啊,你说得对。
作者: iori809    时间: 2010-07-26 09:43
回复 15# blackold


    像黑哥这样的大拿~能每天坚持来真是太不容易了
其实这些问题对于黑哥来说早已经没有任何挑战了
在此向黑哥致敬
作者: blackold    时间: 2010-07-26 09:47
回复 16# iori809


    呵呵。

    很多高手都经常来啊,只是不经常水,想向他们学习都难。

    这里的环境很好
作者: blackold    时间: 2010-07-26 09:53
之前还真没注意mkdir的返值,看了文档,了解又多了些。
function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; }

如果目录不存在则创建目录,如果目录已经存在(mkdir依然是成功的,因为有-p),当然就不用再创建了,之后将工作目录切换到最后一个目录。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2