【问题标题】:How to resolve dependecies while running a shell script remotely?如何在远程运行 shell 脚本时解决依赖关系?
【发布时间】:2014-03-12 05:28:06
【问题描述】:

我正在尝试远程运行 shell 脚本。我在一台机器上有一个资源(.txt 文件),在另一台机器上有一个 shell 脚本,但在同一个网络中。该脚本驻留在特定目录中,并且该脚本获取一些二进制文件,这些二进制文件驻留在目标机器中的其他目录中。现在,我无法远程运行脚本。但我可以运行一个没有任何本地依赖项的简单 shell 程序。您能否提出解决此问题的解决方案?

这是我用来运行没有任何依赖关系的 shell 脚本的命令。

cat input.txt | ssh clrg@192.168.2.22  "sh path/to/shell/script/tokenize.sh"  

在运行带有依赖项的脚本时,出现以下错误,

"ambiguous redirect"  
../../deter-4/bin/determine: No such file or directory  
../../deter-4/bin/determine1: No such file or directory

现在,如何告诉我在运行 shell 脚本时接受依赖项

【问题讨论】:

  • 请详细说明“我无法远程运行脚本”。当您尝试这样做时,请描述您的观察结果。
  • @Alfe 我收到“模糊重定向”错误,因为脚本中有诸如 ../../deter-4/bin/determine 之类的语句。对于这些语句,我收到“没有这样的文件或目录”错误。很明显,该程序无法解决依赖关系。不幸的是,我不知道如何在远程操作时给出路径
  • 标题与问题没有任何关系——依赖解决与实际问题没有任何关系。也许可以将其编辑为更合适的内容?

标签: linux bash shell ssh sh


【解决方案1】:

我认为你的问题是工作目录。试试这样的:

cat input.txt | ssh clrg@192.168.2.22  "sh -c 'cd /path/to/shell/script; ./tokenize.sh'"

您的脚本似乎只希望从特定的工作目录运行。您在评论中提到的有关相对路径(以../../ 开头)的错误消息至少表明了这一点。

【讨论】:

  • 工作就像一个魅力。非常感谢:)
  • sh -c '...' 是不必要的; ssh 的参数被传递给登录 shell,因此可以是任意的 shell 命令序列。
  • 对,@chepner。我不太确定那个分号,所以我选择了保存路径。但我现在倾向于同意。
  • @Alfe 上述方法工作正常,脚本将输出抛出到控制台。但是当我尝试使用重定向(> output.txt)将其保存到文件时,我收到一条消息,上面写着“模糊重定向”。我应该如何将输出保存/写入文件?
  • 你到底输入了什么?我需要整条线。目前我认为您可能在同一命令上同时使用了|>;那将是一个模棱两可的重定向。或者你使用了两次>
猜你喜欢
  • 2020-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 1970-01-01
  • 1970-01-01
  • 2020-01-20
相关资源
最近更新 更多