다음과 같은 텍스트 파일이 있습니다.
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