从 ssh 命令获取值

从 ssh 命令获取值

我有一个脚本可以清除主机(Host_1)中的一些文件。在另一台主机(Host_2)中,我正在对 Host_1 中的脚本执行 ssh。

Host_1 中的脚本:

if [ condition here ]
then
    rm -r /folder #command to remove the files here
    b=$(df -k /folder_name| awk '{print $4}' | tail -1) #get memory after clearing files.
    echo "$b"
else
    return 1
fi

在 Host_2 中,我正在对 Host_1 执行 ssh。

mail_func()
{
val=$1
host=$2
if [ $val -ne 1 ]
        then
        echo "$host $val%" >> /folder/hostnames1.txt #writing host and memory to text file
else
        exit
fi
}
a=$(ssh -q Host_1 "/folder/deletefile.sh")
mail_func a Host_1

此处返回空白。无输出。我尝试通过执行以下操作来查看 Host_2 是否有任何输出

echo $a

这让我一片空白。我不确定我在这里错过了什么。请建议也从单个 ssh 命令获取内存空间。

答案1

return语句用于设置退出代码;它不用作变量赋值的输出。如果您想捕获字符串作为输出,那么您可能需要将其写入标准输出。快速修复方法是对脚本进行以下修改:

#!/bin/bash

#    Script in Host_1

if [ condition here ]
then
    rm -r /folder #command to remove the files here
    b=$(df -k /folder_name| awk '{print $4}' | tail -1) #get memory after clearing files.
    echo "$b"
else
    # NOTE:
    #     This return statement sets the exit-code variable: `$?`
    #     It does not return the value in the usual sense.
    # return 1

    # Write the value to stdout (standard output),
    # so it can be captured and assigned to a variable.
    echo 1
fi

相关内容