我希望能够编码一个用作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
会起作用,但他们不会。
有谁知道如何完成它?
非常感谢
答案 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))}}
}
我在终端上测试了它,它可以正常工作