ไม่สามารถโหลดไฟล์. xml ระยะไกลจากตัวแปร


0

กำลังพยายามอ่านไฟล์. xml จากเซิร์ฟเวอร์อื่นลงในตัวแปร

test=$(ssh root@server "cat /dir/file.xml")

แต่เมื่อทำเช่นecho $testนั้นจะพิมพ์ไฟล์. xml ในรูปแบบหนึ่งซับ

จากนั้นพยายามเรียกใช้xmllintงานไฟล์นี้

xmllint $test

และรับข้อผิดพลาดต่อไปนี้ในแต่ละแท็ก

คำเตือน: ไม่สามารถโหลดเอนทิตีภายนอก "... "

หมายเหตุ: เมื่อทำตามโพรซีเดอร์เดียวกัน แต่บนไฟล์. xml โลคัล (โดยไม่มีssh) จะทำงานและรับผลลัพธ์ที่คาดหวัง

มีวิธีใดบ้างที่จะแก้ปัญหานี้? หรือใช้xmllintเครื่องมือจากระยะไกล

คำตอบ:


2

โปรดทราบว่า$testตัวแปรของคุณมีเนื้อหาของไฟล์ xml ไม่ใช่พา ธ

echo "$test"อย่างไรก็ตามจะแสดงมันรักษาช่องว่างเหมือนเดิมพูดตัวแปร:

ในการรันโปรแกรมที่รับอินพุตจากตัวแปรคุณสามารถใช้ stdin redirecton ในกรณีนี้มันจะเป็น:

echo "$test" | xmllint -

คุณสามารถหลีกเลี่ยงการใช้ตัวแปร:

ssh root@server "cat /dir/file.xml" | xmllint -

ในที่สุดในทุบตีคุณยังสามารถใช้การทดแทนกระบวนการ (ดูman bash):

xmllint <(ssh root@server "cat /dir/file.xml")
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.