首页 > 解决方案 > 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 的脚本将字符串返回到数组吗?

标签: bash

解决方案


或者只是使用 shell 参数扩展来删除引号:

ssh -N -L 9000:${ip_array[$2]//"/}:443 ssh-server

那个单独的双引号可能会弄乱编辑器的语法突出显示。


推荐阅读