zsh脚本编码完整文件路径

时间:2015-03-10 18:35:47

标签: url zsh

我希望能够编码一个用作url的路径,即将空格更改为%20。我发现这个函数执行编码:

urlencode() {
   setopt localoptions extendedglob
   input=( ${(s::)1} )
   print ${(j::)input/(#b)([^A-Za-z0-9_.\!~*\'\(\)-    ])/%${(l:2::0:)$(([##16]#match))}}
}

并希望能够传递结果:

print -l $PWD/* | tail -1 

到function.i.e获取文件列表中的最后一个完整路径并对其进行编码。

我认为是这样的:

print -l $PWD/* | tail -1 | urlencode

print -l $PWD/* | tail -1 > urlencode

会起作用,但他们不会。

有谁知道如何完成它?

非常感谢

1 个答案:

答案 0 :(得分:1)

您需要从stdin而不是第一个参数获取输入。

以下是调整功能的一种方法

urlencode() {
   setopt localoptions extendedglob
   stdin=`while read line; do echo $line ;done`
   input=( ${(s::)stdin} )
   print ${(j::)input/(#b)([^A-Za-z0-9_.\!~*\'\(\)-    ])/%${(l:2::0:)$(([##16]#match))}}
}

我在终端上测试了它,它可以正常工作