ฉันได้รับข้อผิดพลาดแปลก ๆ จากคำสั่ง awk ต่อไปนี้ใน linux


1
`awk '{print "ssh -q " $1 " \"echo && hostname && df -h | grep /usr\";"}' essentials`

มันควรจะเชื่อมต่อกับกลุ่มของชื่อโฮสต์จากไฟล์ "จำเป็น" และสะท้อนการใช้พื้นที่ดิสก์ของพวกเขา ถ้าฉันกำจัดติ๊กด้านหลังคุณจะเห็นสิ่งที่กำลังถูกดำเนินการ:

ssh -q hostname1 "echo && hostname && df -h | grep /usr";
ssh -q hostname2 "echo && hostname && df -h | grep /usr";
ssh -q hostname3 "echo && hostname && df -h | grep /usr";

เอาท์พุทที่แท้จริง:

-bash-3.2$ `awk '{print "ssh -q " $1 " \"echo && hostname && df -h | grep /usr\";"}' essentials`
bash: echo && hostname && df -h | grep /usr: No such file or directory

hostname2
/dev/xvda3             23G   13G  9.2G  59% /usr

hostname3
/dev/xvda3             23G  1.5G   21G   7% /usr

แนวคิดใดที่ทำให้คำสั่งแรกนั้นใช้ไม่ได้


คืออะไร essentials เนื้อหา?
BloodPhilia

Essentials มีชื่อโฮสต์ ... 1 ต่อบรรทัด
Nick

คำตอบ:


3

นั่นเป็นเพราะ echo && hostname && df -h | grep /usr จะถือว่าเป็นคำสั่งเดียวใช้สิ่งนี้แทน:

`awk '{print "ssh -q " $1 " bash -c \"echo && hostname && df -h | grep /usr\";"}' essentials`

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.