मेरे पास कोड है जो एक txt फ़ाइल पढ़ता है और माना जाता है कि इसमें से पंक्तियों को एक कमांड में पढ़ा जाता है। फिर, उस कमांड के आउटपुट को लाइन द्वारा लाइन को दूसरे कमांड में भी पढ़ा जाना चाहिए। मेरा बाहरी लूप काम करता है (मैंने इसे इको का उपयोग करके परीक्षण किया है) लेकिन मेरा नेस्टेड लूप नहीं है:
#!/bin/bash
while read p; do
folder="$(aws s3 ls s3://a-bucket/users/ --recursive | grep ${p} | cut -c 32-)"
while read -r line
do
aws s3 cp s3://a-bucket/"$line" 'c:/users/basud/desktop/testerData' --recursive
done <<< "$folder"
done < testIDs.txt
पहली पंक्ति से आउटपुट जो "फ़ोल्डर" में पढ़ा जाता है, testIDs.txt की प्रत्येक पंक्ति के लिए ऐसा दिखता है:
users/3e8c95b4-c5ee-4edc-954e-6d988d30557e/111BEF99-5AB6-486A-ABD5-A4682CE0D491-LEFT.zip
users/3e8c95b4-c5ee-4edc-954e-6d988d30557e/111BEF99-5AB6-486A-ABD5-A4682CE0D491-RIGHT.zip
मैं पथ नाम में जोड़ने के लिए "फ़ोल्डर" की प्रत्येक पंक्ति को "a-bucket /" के बाद aws कमांड में पास करना चाहता हूँ। मुझे कोई आउटपुट नहीं मिल रहा है आपकी मदद बहुत ही सराहनिय है।
डिबग करने का एक तरीका यह है
—
जेकगोल्ड
echo
कि aws
आप उस लाइन से पहले जोड़ दें ताकि आप देख सकें कि कमांड कैसा दिखता है। कुछ इस तरह echo aws s3 cp s3://a-bucket/"$line" 'c:/users/basud/desktop/testerData' --recursive
।
@choroba क्या आप अपनी टिप्पणी समझा सकते हैं?
—
कंफ़ेद्दी
@choroba दिलचस्प जवाब लेकिन कोई पासा नहीं जब मैंने कोड चलाया / = मैं आपकी टिप्पणी में "किया" मान रहा हूं, वह है जो मेरे मूल कोड में "$ फ़ोल्डर" से पहले है
—
कृष्ण बासुदे
done < <(aws s3 ls ...)