我有一个脚本可以清除主机(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