Linux 循环脚本,重定向到文件

Linux 循环脚本,重定向到文件,linux,bash,shell,loops,output,Linux,Bash,Shell,Loops,Output,所以我有这个BASH脚本,我想做的是,接触服务器。检查目录的已用百分比。如果它高于我设置的阈值(90),则将该服务器名称打印到运行脚本的服务器上的另一个文件中 它所做的是将第一个服务器名在文件中打印两次,使其看起来像 server1 server2 这是我的剧本。。。我不明白为什么它会循环到第一台服务器两次 #!/bin/bash SERVERS="server1 server2" for i in $SERVERS; do ssh $SERVERS "

所以我有这个BASH脚本,我想做的是,接触服务器。检查目录的已用百分比。如果它高于我设置的阈值(90),则将该服务器名称打印到运行脚本的服务器上的另一个文件中

它所做的是将第一个服务器名在文件中打印两次,使其看起来像

server1
server2
这是我的剧本。。。我不明白为什么它会循环到第一台服务器两次

#!/bin/bash

SERVERS="server1
server2"

for i in $SERVERS; do

        ssh $SERVERS "
        df -h | grep var | awk '{print \$4}' | sed 's/%//g' > /home/user/space.txt
        RESULTS=\$(grep -E "1[5-9]" /home/user/space.txt)
        THRESHOLD=90
        if [[ \$RESULTS -lt \$THRESHOLD ]]; then
        exit 1;
        elif [[ \$RESULTS -gt \$THRESHOLD ]]; then
        hostname;
        fi
        " >> /home/user/problem.txt
done
试试这个

#!/bin/bash

SERVERS="server1
 server2"

for i in $SERVERS; do

    ssh "$i" "
    df -h | grep var | awk '{print \$4}' | sed 's/%//g' > /home/user/space.txt
    RESULTS=\$(grep -E "1[5-9]" /home/user/space.txt)
    THRESHOLD=90
    if [[ \$RESULTS -lt \$THRESHOLD ]]; then
    exit 1;
    elif [[ \$RESULTS -gt \$THRESHOLD ]]; then
    hostname;
fi
    " >> /home/user/problem.txt
done

您想要ssh$iy您的循环变量是
$i
,但您说的是
ssh$SERVERS
。您需要
ssh$i
,以便首先执行server1,然后执行server2。