【问题标题】:SSH exec local shell script with options带有选项的 SSH exec 本地 shell 脚本
【发布时间】:2020-01-19 12:25:51
【问题描述】:

我是 shell 脚本的新手,目前我有一个名为 deploy.sh 的 shell 脚本,它可以采用一些选项,例如 -n namespaceName -a appName 等,如下所示。

./deploy.sh -n namespaceA -a appB

但是当我通过 SSH 像下面这样执行它时,它不起作用,

ssh root@$remoteHost  'bash -s' < deploy.sh -n namespaceA -a appB

当我修改脚本以直接接受参数而不是选项时(如上),它工作正常。

ssh root@$remoteHost  'bash -s' < deploy.sh namespaceA appB

有没有办法将选项传递给它?任何人都可以解释一下吗? TIA。

【问题讨论】:

  • 使用getopts 应该对你有用。此外,如果您将 #!/bin/bash 放在脚本的顶部,则不必在命令行中调用 bash -s...
  • ssh root@$remoteHost "./deploy.sh -n namespaceA -a appB"?
  • @Cyrus 我试过了,它不起作用。提示bash: ./deploy.sh: No such file or directory,确实存在同一个目录。
  • @Jamie_D 我在 deploy.sh 文件中使用 getopts 命令,不,它也不起作用,#!/bin/bash ssh root@10.100.111.11 deploy.sh -n namespaceA -a appB 它说 `deploy.sh: command not found`

标签: bash shell ssh


【解决方案1】:

你可以这样做:

ssh root@$remoteHost  'bash -s' < deploy.sh -- -n namespaceA -a appB

添加-- 是为了避免-n namespaceA -a appB 被ssh 命令占用。

【讨论】:

  • 天才,兄弟,你让我开心!!!找了好久,没找到。你的评论很清楚。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2017-06-29
  • 2011-09-05
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多