首页 > 解决方案 > 接收 URL 作为 shell 脚本的参数时,如何在不使用引号的情况下绕过与号 (&)?

问题描述

我正在构建一个 shell 脚本(试图符合 POSIX),但我遇到了一个问题。该脚本应该接收一个 URL 并对其内容做一些事情。

myscript www.pudim.com.br/?&args=ok

www.pudim.com.br/?问题是,&符号被解释为命令添加剂,并且仅将部分作为参数提供给我的脚本。

我知道正确的解决方法是用引号括住 URL,但是因为我需要连续多次使用这个脚本,所以我想粘贴 URL 而不必每次都用引号括起来。

有什么方法可以绕过 & 符号来获取完整的 URL 参数吗?

标签: shellshposix

解决方案


完整网址的报价

将 URL 用引号括起来是您唯一的机会。请参阅流行的 shell 实用程序curl,因为它说明了它的核心参数 URL:

从命令行提示符调用时使用 [] 或 {} 序列时,您可能必须将完整的 URL 放在双引号内以避免 shell 干扰它。这也适用于其他特殊处理的字符,例如“&”、“?” 和 '*'。

另见这个问题那个

用于指定查询参数的额外参数

您还可以将查询参数(键值对)作为单独的参数传递。所以你可以绕过&作为分隔符。查看curl-F选项:

-F, --form <名称=内容>

从 STDIN 读取 URL

如果您的脚本允许用户交互,您可以从未解释的输入源中获取未read转义的URL(包括元字符as )。&请参阅本教程


推荐阅读