프로세스 교체 bash의 배열 요소에 액세스

프로세스 교체 bash의 배열 요소에 액세스

다음과 같은 텍스트 파일이 있습니다.

b4238ca2-cb8d-11e4-8731-1681e6b88ec1,https,username,password,ipaddress    
b4238f0e-cb8d-11e4-8731-1681e6b88ec1,https,username,password,ipaddress
b4239058-cb8d-11e4-8731-1681e6b88ec1,https,username,password,ipaddress

참고: 사용자 이름, 비밀번호 및 IP 주소는 민감한 정보를 공개하지 않도록 모두 변경되었으며, 이는 제가 사용하는 텍스트 파일에 있는 실제 정보입니다.

나는 한 줄씩 읽고 각 항목을 배열에 넣기 위해 다음 bash 스크립트를 작성했습니다. 이전에는 작동했지만 이제는 교체가 진행 중이므로 더 이상 작동하지 않습니다. 나는 이것이 배열 요소에 액세스하는 방식과 관련이 있다고 가정하지만 무엇이 잘못되었는지는 잘 모르겠습니다. 스니펫은 다음과 같습니다.

i=0
declare -a devices

while read line
do
    devices[i]=$line
    ((i++))
done < test_data.txt
timestamp=$(date +"%s")
echo "${devices[@]}"
IFS=","
declare -a devarr
for device in "${devices[@]}"
do
    devarr=($device)
    read dateStrNew dateStrOld < <(curl -k -q "${devarr[1]}://${devarr[2]}:${devarr[3]}@${devarr[4]}/camerainfo" | html2text |     gawk '/Newest Sequence/ { new=$3" "$4 }/Oldest Sequence/ {old=$3" "$4}END {OFS=","; print new,old }')

또한 이전 질문에서 제안한 일부 대체 코드와 조사 중에 발견한 다른 코드의 조합을 기반으로 다음을 시도했지만 작동하지 않았습니다. 그러나 이렇게 하면 상황이 크게 단순화됩니다. 이것이 가능하고 더 나은 솔루션입니까?

while read -u 3 line
do
    read UUID protocol username passwd ip_address
    curl_call="${protocol}://${ip_address}:${username}@${passwd}/report"
    echo $curl_call

    read dateStrNew dateStrOld < <(curl -k -q "$curl_call" | html2text | gawk'/Newest Sequence/ { new=$3" "$4 }/Oldest Sequence/ {old=$3" "$4}END {OFS=",";print new,old }')

done 3< test_data.txt

어쨌든 긴 밤이 될 것이기 때문에 어떤 도움이라도 대단히 감사하겠습니다! 감사해요!

답변1

간단한 구문을 이해하시나요?

while IFS=',' read -r UUID protocol username passwd ip_address
do
    curl_call="${protocol}://${username}:${passwd}@${ip_address}/report"
    echo $curl_call
done < test_data.txt

관련 정보