仅执行第一个元素到数组中的问题

时间:2018-10-02 09:49:58

标签: arrays bash jenkins

我以为我的问题很简单,但是我不知道为什么我的脚本只能在数组中执行一次。

我有一个詹金斯工作(bash脚本)。该作业使用收集的信息通过脚本收集主机名并发送ssh命令:

rm /tmp/hosts

docker exec -t tmgnt_consul_1 consul members -status=alive | grep -v  Node | awk '{print $1}' | cut -d : -f1 >> /tmp/hosts
sed -i '/someunnecessaryinfo/d' /tmp/hosts
echo >> /tmp/hosts

shopt -s lastpipe

while IFS= read -r line;  do 
echo "host is >>$line<<"; 
url="http://111.111.111.111:8500/v1/catalog/nodes"
term_IP=`curl -s $url | jq -r --arg Node "${line}" '.[] | select(.Node == "'${line}'" )|.Address' --raw-output`
echo $term_IP
sudo bash -x /home/rtm/t_mgnt/check_fw $term_IP 

done < /tmp/hosts

第二个脚本:

#!/bin/bash

term_IP=$1

sudo sshpass -p 'some.pass' ssh -o StrictHostKeyChecking=no user@$term_IP "sudo test -d /root/nv9"
if [ $? != 0 ]; then
sudo sshpass -p 'some.pass' \
scp -n -o StrictHostKeyChecking=no -r /home/rtm/t_mgnt/nv9 user@$term_IP:
sudo sshpass -p 'some.pass' \
ssh -n -o StrictHostKeyChecking=no user@$term_IP "sudo mv nv9 /root/"
sudo sshpass -p 'some.pass' \
ssh -n -o StrictHostKeyChecking=no user@$term_IP "sudo dpkg -i /root/nv9/libudev0_175-0ubuntu9_amd64.deb"
sudo sshpass -p 'some.pass' \
ssh -n -o StrictHostKeyChecking=no user@$term_IP "sudo /root/nv9/DetectValidator"
else
sudo sshpass -p 'some.pass' \
ssh -n -o StrictHostKeyChecking=no user@$term_IP "sudo /root/nv9/DetectValidator"
fi

该工作正常,并返回正确的值,但仅适用于数组的第一个元素。

PS-我已经搜索了该站点和其他站点,并且-以下回答对我没有帮助-Shell script while read line loop stops after the first line(已经是“ ssh -n -o”)。 也许你可以指出我,我错过了什么。

1 个答案:

答案 0 :(得分:1)

dat[c(3,2,1,6,5,4,7),] # Rating el es # AAA 34.07 0.06 # AA 26.25 0.13 # A 21.96 0.15 # BBB 14.63 0.52 # BB 2.24 0.07 # B 0.84 0.07 # CCC 70.48 0.04 调用可能会占用您的输入:

ssh

尝试添加sudo sshpass -p 'some.pass' ssh -o StrictHostKeyChecking=no user@$term_IP "sudo test -d /root/nv9" ^^^