bash - Bash脚本在命令周围加引号
问题描述
我有一个 Bash 脚本,它将获取一个 IP 以用作 SSH 隧道的一部分,但运行此脚本时 SSH 隧道会失败。使用时,set -x
我可以看到它将 SSH 命令的参数放在单引号中,手动运行此行会导致相同的错误。
剧本:
ssh -N -L 9000:${ip_array[$2]}:443 ssh-server
第一个参数在脚本的其他地方用于其他用途,这就是为什么在这里使用第二个参数。ssh-server
是我的 SSH 配置中我正在通过隧道的服务器的别名。
我得到的输出是:
ssh -N -L '9000:"172.0.0.1":443' ssh-server
这可能是因为获取 IP 的脚本将字符串返回到数组吗?
解决方案
或者只是使用 shell 参数扩展来删除引号:
ssh -N -L 9000:${ip_array[$2]//"/}:443 ssh-server
那个单独的双引号可能会弄乱编辑器的语法突出显示。
推荐阅读
- javascript - 使用 auth 知道用户已登录
- rust - 如何使用 rusqlite 在 sqlite 数据库中插入和获取日期?
- delphi - 如何为此代码结果设置 if 条件?
- java - Spring Boot:更改 gradle 依赖项后项目不会编译
- angular - 调用多个api并使用MergeMap订阅数据
- javascript - 我可以使用 Javascript 将 SVG 中所有图像标签的文件大小作为其宽度和高度的一个因素来减小吗?
- http-headers - 未为角度 7 中的所有 http 请求设置授权标头
- spring - Spring gateway - 如何只为所有路由去除前缀一次
- azure - [Azure 部署]:我们可以使用 c# 按名称过滤 Azure 资源组部署吗?
- c - INT_MAX 和 INT_MAX 之和