我在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),如果存在这样的话。
为任何帮助干杯:)
答案 0 :(得分:8)
我同意@Chepner的回答,但是对于google的结果来说,使用pbpaste进行cd只需执行以下操作:
cd $(pbpaste)
答案 1 :(得分:2)
当您使用%q
格式时,您将向字符串添加文字反斜杠,当您将cd
与f
一起使用时,shell不会将其作为转义字符处理。
剪贴板对进程间通信非常有用;在单个脚本中,使用变量暂时保存信息更容易。 cd "$f"
已经有了路径名,所以只需使用它:
f
注意我引用了cd
的扩展,因此路径名中的任何空格都作为单个参数的一部分传递给{{1}}。