t1=`cat final-md5sum | awk '{print $3}'`
t2=`cat final-md5sum | awk '{print $5}'`
for ip in $t1; do
for path in $t2; do
echo "Node Name: " $ip "| Out-Of-Sync File Details: " $path `ssh root@$ip stat -c%y $path | cut -d'.' -f1`
done
done
コンテンツfinal-md5sum
:
$ cat final-md5sum
Node Name: 192.168.1.2 Out-ofSync-Filename: /home/user1/file1
Node Name: 192.168.1.3 Out-ofSync-Filename: /home/user3/file4
私の現在の出力:
Node Name: 192.168.1.2 | Out-Of-Sync File Details: /home/user1/file1 2021-07-19 19:25:37
Node Name: 192.168.1.2 | Out-Of-Sync File Details: /home/user1/file1 2021-07-19 19:25:37
Node Name: 192.168.1.3 | Out-Of-Sync File Details: /home/user3/file4 2021-07-19 19:14:09
Node Name: 192.168.1.3 | Out-Of-Sync File Details: /home/user3/file4 2021-07-19 19:14:09
予想出力:
Node Name: 192.168.1.2 | Out-Of-Sync File Details: /home/user1/file1 2021-07-19 19:25:37
Node Name: 192.168.1.3 | Out-Of-Sync File Details: /home/user3/file4 2021-07-19 19:14:09
出力に重複した値が表示されます。私がここで何を間違っているのか?
答え1
ネストされたループを使用しているため、重複が発生するため、内部ループは各外部ループに対して2回実行されます(2つの行があるため)。私はあなたが期待したものをよく理解していません。簡単な解決策は、2つのループを使用しないことです。
awk '{print $3, $5}' final-md5sum |
while read -r ip path; do
echo "Node Name: " $ip "| Out-Of-Sync File Details: " $path `ssh root@$ip stat -c%y $path | cut -d'.' -f1`
done
それとももっと明確だと思います。
awk '{print $3, $5}' final-md5sum |
while read -r ip path; do
sshOutput=$(ssh root@"$ip" stat -c%y "$path" | cut -d'.' -f1)
echo "Node Name: $ip | Out-Of-Sync File Details: $path $sshOutput"
done