bash - 在 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
解决方案
采用
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 "$@"
推荐阅读
- php - 如何在php的while循环中执行mysql查询
- javascript - 从ajax传递数据时防止页面完全刷新
- docker - 在 hbase docker 调用异常
- rest - 如何使用 codegnitor rest API 在数据库中保存单选按钮输出
- ios - 在没有 IF 语句的情况下滑动时显示和隐藏 UIView?
- ckeditor - CK Editor 默认字体系列和字体大小
- javascript - 谷歌地图不适用于 HTTP
- doctrine-orm - Symfony 巨大的日期时间对象,在时区有数百个转换
- c - 在没有 Internet 访问的情况下将头文件安装到 linux 机器上
- java - 如何简化填写始终具有相同内容的表单?