首页 > 解决方案 > 在 zsh 脚本中传播第 n 个参数之后的所有参数

问题描述

如果我有一个像

curl --socks5-hostname "127.0.0.1:${2-1080}" $1 

我可以:

purl bing.com 1081

意义:

curl --socks5-hostname "127.0.0.1:1081" bing.com

现在我想动态添加新的参数,如:

purl bing.com 1081 --connect-timeout 1

我怎么能做到呢?

如果我使用

curl --socks5-hostname "127.0.0.1:${2-1080}" $1 "$@"

然后它最终会变成:

curl --socks5-hostname "127.0.0.1:1081" bing.com bing.com 1081 --connect-timeout 1

这不是我们想要的结果……

我想:

curl --socks5-hostname "127.0.0.1:1081" bing.com --connect-timeout 1

标签: bashzsh

解决方案


采用

curl --socks5-hostname "127.0.0.1:${2-1080}" $1 "{@:3}"

或者

host=$1
port=${2:-1080}
shift 2
curl --socks5-hostname "127.0.0.1:$port" $host "$@"

推荐阅读