shell脚本无法查看远程目录中的文件

时间:2015-09-22 01:34:25

标签: linux bash shell ssh zsh

我正在尝试在远程服务器上编写交互式脚本,其默认shell为zsh。我一直在尝试两种不同的方法来实现这个目的:

方法1: sudo sysctl vm.vdso_enabled=0

方法2: ssh -t <user>@<host> "$(<serverStatusReport.sh)"

我一直在使用方法1直到现在,当我遇到以下问题时 - 我有一段代码运行,具体取决于当前目录中是否存在某些文件:

ssh <user>@<host> "bash -s" < serverStatusReport.sh
  1. 如果我直接进入服务器并直接运行命令,我会看到“找到$ filename”。
  2. 如果我使用方法1运行上面的代码块,我会看到“$ filename not found”。
  3. 如果我将此块复制到一个新脚本(让我们调用此 script2 ),然后使用方法2运行它,那么我会看到“找到$ filename”。
  4. 我不能为我的生活找出这种差异的来源。我认为不同之处可能是script2被管道传输到bash而我的原始脚本正在运行zsh ...但考虑到在服务器上逐字运行相同的命令,使用其默认的zsh shell,正确返回...我我很难过。

    :(非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我想在执行方法1时,本地shell会扩展"$(<serverStatusReport.sh)",而不是远程。您可以通过以下方式轻松检查:

ssh -t <user>@<host> "$(<hostname)"

serverStatusReport.sh脚本是否也在本地主机的PATH中?

我不明白为什么你收到这条消息而不是错误信息。