คำสั่ง Shell ไม่ทำงานกับ # ในนั้น


0

นี่คือคำสั่งเชลล์ของฉัน:

sudo sh -c "echo "#" > /file"

แต่มันใช้งานไม่ได้ แต่มันใช้งานได้:

sudo sh -c "echo "hi" > /file"

ฉันจะแก้ไขสิ่งนี้ได้อย่างไรเพราะ # จำเป็นต้องอยู่ในนั้น


3
(เพียงแค่แสดงความคิดเห็นใน "ทำไม?"; ที่อยู่คำตอบที่ได้รับ "วิธีการแก้ไข".) เครื่องหมายคำพูดคู่ไม่ซ้อนกัน #ไม่เป็นส่วนหนึ่งของการโต้แย้งไปยัง-cตัวเลือก; เท่านั้น"echo "คือ #เพียงแค่จุดเริ่มต้นของความคิดเห็นในบรรทัด
chepner

มันจะต้องอยู่ในไฟล์!

คำตอบ:


5

ใช้คำพูด 'ยาก' สำหรับตัวละครที่มีเล่ห์เหลี่ยม:

sudo sh -c "echo '#' > /file"

3
ไม่มีอะไรเกี่ยวข้องกับเครื่องหมายคำพูดคู่ถ้าหากมันเกี่ยวกับ$ตัวละคร sudo sh -c 'echo "#" > /file'ก็จะทำงานเช่นกัน เป็นเพียงแค่บรรทัดสคริปต์ต้นฉบับใช้คำพูดเดียวกันทั้งสองระดับโดยไม่ต้องหลบหนีทำให้sudo sh -c "echo "ส่วนที่เหลือเป็นความคิดเห็น (อาจเป็นเพราะbashตัวเลือกinteractive_comments)
Daniel Beck

0

หากคุณไม่ต้องการใช้เครื่องหมายคำพูดต่างกันเพียงตัวเดียวคุณสามารถหลีกเลี่ยงตัวอักษรแฮชได้:

sudo sh -c "echo "\#" > /file"

เช่นเดียวกับในหลาย ๆ ภาษาสคริปต์คำสั่งเชลล์ตีความอักขระแฮช ( #) เป็นจุดเริ่มต้นของความคิดเห็น


ไม่ได้ผลสำหรับฉัน!

2
มันไม่ทำงานเพราะคำพูดทั้งหมดจะถูกลบออกก่อนที่จะส่งผ่านสตริงsudo(และจากนั้นไปsh -c) โดยพื้นฐานแล้วมันรันคำสั่งซึ่งเทียบเท่าเพียงecho # > /file echo
Gordon Davisson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.