我在Mac上使用Automator来设置一个服务,该服务将一个选定的文件夹作为参数传递给一个bash shell脚本。在脚本中,我这样做:
for f in "$@"; do
printf "%q\n" "$f" | pbcopy
done如果我这样做了:
echo `pbpaste`我得到了带有空格转义的所选文件夹的路径(\)。然后,我想使用此路径cd到该目录,并执行一系列其他操作(创建一个空白目录结构)。我希望我能做到:
cd `pbpaste`但这不管用。如果我手动输入路径,cd会正常工作,所以我认为是数据类型或返回等问题??
我承认我真的不知道这个脚本实际上在做什么,可能是完全错误的,但是如果有人能解释这里发生了什么,以及如何让它工作,那就太好了,但更好的是,对于一个完全初学者开始学习shell脚本的人来说,这将是一个非常好的参考资料。我真的很喜欢深入这方面的想法,但我找到的所有资源要么是完全基础的(cd,ls,pwd等),要么是非常高的水平,并假设有一堆以前的知识。我真正想要的是一个完整的语言参考和一些实际的例子,就像你为我更习惯的语言(HTML/CSS/JS/AS3)找到的那样,如果存在这样的东西的话。
为任何帮助干杯:)
发布于 2013-05-24 03:50:32
使用%q格式时,将向字符串添加文字反斜杠,当您将其与cd一起使用时,shell不会将其作为转义字符处理。
剪贴板对于进程间通信很有用;在单个脚本中,只使用变量临时保存信息会更容易。f中已经有了路径名,所以只需使用它:
cd "$f"注意,我引用了f的扩展,因此路径名中的任何空格都作为cd的单个参数的一部分传递。
发布于 2014-11-30 14:21:11
我同意@chepner的回答,但是为了google的结果,你可以简单地执行以下操作:
cd $(pbpaste)https://stackoverflow.com/questions/16719970
复制相似问题