【问题标题】:Variable not storing values over ssh变量不通过 ssh 存储值
【发布时间】:2018-01-09 05:13:47
【问题描述】:

我需要通过 ssh 向远程机器运行一些命令。 但是在尝试执行一些基本命令时,例如:

ssh abc@remotemachine.com "a='hello'; echo $a"

在屏幕上不产生任何输出。 不过

ssh abc@remotemachine.com "echo 'hello'"

输出正常

Hello

谁能解释一下为什么会这样?

现在主要问题是我需要在远程机器上执行 awk/cut 并将输出存储在一个变量中。 类似的东西:

ssh abc@remotemachine.com 'a=$(df /tmp | awk 'NR==2 {print $NF}');echo $a' 

但我无法将 ' 放在 ' ' 中。

【问题讨论】:

    标签: linux awk ssh redhat cut


    【解决方案1】:

    ssh abc@remotemachine.com 'a="hello"; echo $a' 会好的 在您的命令中,$a 将在执行 ssh 之前在本地 shell 中解释。

    另一种方式是 ssh abc@remotemachine.com "a='hello'; echo \$a"

    【讨论】:

    • 谢谢。它有效,但您能否提供相同的详细解释。另外,如果您想在 ssh 语句中使用 cut 或 awk 怎么办。这些命令中的 ' 不会让它们执行.. 例如 ssh abc@remotemachine.com 'df /tmp | awk 'NR==2 {print $NF}' '
    • 不满足我的用例。另外cn您解释了为什么会这样,考虑到 ssh abc@remotemachine.com "echo hello" 工作正常。
    • 在单引号中,不能转义。没有办法如何将单引号包含在单引号中。你可以这样做: ssh abc@remotemachine.com "df /tmp | awk 'NR==2 {print $NF}' "
    • @VatsalPrakash,我也更新了我的答案,请看一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2019-05-31
    • 2015-09-30
    • 1970-01-01
    相关资源
    最近更新 更多