มีวิธีง่าย ๆ ในการคอมเม้นท์บล็อกของรหัสในเชลล์สคริปต์หรือไม่?
มีวิธีง่าย ๆ ในการคอมเม้นท์บล็อกของรหัสในเชลล์สคริปต์หรือไม่?
คำตอบ:
ในทุบตี:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
'
และ'
รอบ ๆEND
ตัวคั่นมีความสำคัญมิฉะนั้นสิ่งที่อยู่ภายในบล็อกเช่นตัวอย่าง$(command)
จะถูกแยกและดำเนินการ
EOF
เป็นตัวอย่างแบบคลาสสิก (และเป็น!
เครื่องหมายอัศเจรีย์ของตัวเอง) แต่คุณสามารถใช้SNURFLE_BURGERS
หรือclassical_end_marker
หรือคำอื่น ๆ ที่ไม่ปรากฏบนบรรทัดของตัวเองในเนื้อหาที่มีการแสดงความคิดเห็น ฉันลังเลที่จะทดลองกับที่ว่าง ฯลฯ แต่คำอาจใช้ได้กับพวกเขาเช่นกัน
:
) ที่ไม่อ่านอินพุตและออกจากค่าที่ประสบความสำเร็จเสมอและส่ง "comment" เป็นอินพุต ไม่มากไป
ไม่มีความคิดเห็นแบบบล็อกบนเชลล์สคริปต์
ใช้vi
(ใช่vi
) คุณสามารถแสดงความคิดเห็นได้อย่างง่ายดายจากบรรทัดnถึงm
<ESC>
:10,100s/^/#/
(ที่อ่านมาจากบรรทัดที่ 10 ถึง 100 การแทนที่บรรทัดเริ่มต้น (^) ด้วยเครื่องหมาย #)
และยกเลิกการแสดงความคิดเห็นด้วย
<ESC>
:10,100s/^#//
(ที่อ่านมาจากบรรทัดที่ 10 ถึง 100 การแทนที่บรรทัดเริ่มต้น (^) ตามด้วย # ด้วย noting //.)
vi
/bin/sh
เป็นได้ทุกที่เกือบจะเป็นสากลที่มี
|noh
ไปยังจุดสิ้นสุด noh
ไพพ์แยกคำสั่งเพิ่มเติมและใช้สำหรับไฮไลต์ การเน้นข้อความค้นหาจะกลับมาทำงานโดยอัตโนมัติในครั้งต่อไปที่คุณค้นหาบางสิ่ง ตัวอย่าง::10,100s/^/#/g|noh
<SHIFT>+G 10 <ENTER>
นั้น0
หรือโดยวิธีอื่น ๆ เพื่อนำทาง) จากนั้นใช้<CTRL>+V
เพื่อเข้าสู่โหมดบล็อกภาพและเน้นจุดเริ่มต้นของทุกบรรทัดที่คุณต้องการแสดงความคิดเห็น (ในตัวอย่างนี้90 J
) จากนั้นกดSHIFT+I
เพื่อแทรกหน้าบล็อกที่ไฮไลต์ ป้อนสัญลักษณ์ความคิดเห็น (เช่น#
) และกด<ESC>
เพื่อสิ้นสุดคำนำหน้า คำอธิบายนี้ฟังดูยาวมาก แต่จากประสบการณ์ของฉันมันเร็วกว่ามากในทางปฏิบัติ
คุณสามารถใช้ได้:
if [ 1 -eq 0 ]; then
echo "The code that you want commented out goes here."
echo "This echo statement will not be called."
fi
if [ ];
งานได้เช่นกัน
if false;
บางทีอาจจะเป็นที่ชัดเจน: stackoverflow.com/a/18019516/2097284
ต่อไปนี้ควรทำงานsh
, bash
, และksh
zsh
บล็อกของรหัสที่จะแสดงความคิดเห็นสามารถใส่ข้างในBEGINCOMMENT
และENDCOMMENT
:
[ -z $BASH ] || shopt -s expand_aliases
alias BEGINCOMMENT="if [ ]; then"
alias ENDCOMMENT="fi"
BEGINCOMMENT
echo "This line appears in a commented block"
echo "And this one too!"
ENDCOMMENT
echo "This is outside the commented block"
การใช้โค้ดข้างต้นจะส่งผลให้:
This is outside the commented block
เพื่อยกเลิกการคอมเม้นต์บล็อกรหัสจึงแสดงความคิดเห็นพูด
alias BEGINCOMMENT="if : ; then"
แทน
alias BEGINCOMMENT="if [ ]; then"
ในตัวอย่างด้านบน
หากคุณสามารถหลบราคาเดียว:
__='
blah blah comment.
'
ใช้: '
เพื่อเปิดและ'
ปิด
ตัวอย่างเช่น:
: '
This is a
very neat comment
in bash
'
นี่คือจากตัวอย่างของสเวกัสพบได้ที่นี่
ในกลุ่ม:
shift-V
(เข้าสู่โหมดแสดงภาพ) ขึ้นบรรทัดไฮไลต์ลงในบล็อก:s/^/#/
คำสั่งจะมีลักษณะเช่นนี้:
:'<,'>s/^/#
กด Enter
เช่น
shift-V
jjj
:s/^/#
<enter>
:s/^#/
คุณสามารถใช้โหมด Visual Block ของ Vi / Vim ซึ่งออกแบบมาสำหรับสิ่งต่าง ๆ ดังนี้:
Ctrl-V
Highlight first element in rows you want commented
Shift-i
#
esc
ความคิดเห็นจะเป็น:
Ctrl-V
Highlight #'s
d
l
นี่เป็นวิธีการโต้ตอบของ vi ในการทำสิ่งนี้แทนที่จะนับหรืออ่านหมายเลขบรรทัด
สุดท้ายใน Gvim คุณใช้ ctrl-q เพื่อเข้าสู่โหมด Visual Block แทน ctrl-v (เพราะเป็นทางลัดสำหรับวาง)
ในความซื่อสัตย์ทั้งหมดทำไม overengineering มาก ...
ฉันคิดว่าเป็นวิธีปฏิบัติที่ไม่ดีในการเขียนรหัสที่ใช้งานอยู่เพื่อสร้างรหัสแฝง
โซลูชันของฉัน: บรรณาธิการส่วนใหญ่มีโหมดเลือกบล็อก เพียงใช้เพื่อเพิ่ม # ให้กับทุกบรรทัดที่คุณต้องการแสดงความคิดเห็น เรื่องใหญ่อะไร ...
ตัวอย่าง Notepad:
วิธีสร้าง: Alt - mousedrag down กด #
ในการลบ: Alt-mousedrag down, ลูกศร shift-right, ลบ
ความแตกต่างของเคล็ดลับ here-doc ในคำตอบที่ได้รับการยอมรับโดย sunny256 คือการใช้คีย์เวิร์ด Perl สำหรับความคิดเห็น หากความคิดเห็นของคุณเป็นเอกสารจริง ๆ คุณสามารถเริ่มใช้ไวยากรณ์ Perl ในบล็อกคอมเม้นต์ซึ่งช่วยให้คุณสามารถพิมพ์ออกมาในรูปแบบที่เหมาะสมแปลงเป็นหน้าคนเป็นต้น
เท่าที่เปลือกเป็นห่วงคุณจะต้องเปลี่ยนด้วย'END'
'=cut'
echo "before comment"
: <<'=cut'
=pod
=head1 NAME
podtest.sh - Example shell script with embedded POD documentation
etc.
=cut
echo "after comment"
(พบใน " เอกสารฝังในเชลล์สคริปต์ ")
โหมดอื่นคือ: หากตัวแก้ไขของคุณมีตัวเลือกความคิดเห็นไม่บล็อก
DONE
มันทำงานร่วมกับบรรณาธิการใด ๆ
ฉันชอบบรรทัดเดียวเปิดและปิด:
if [ ]; then ##
...
...
fi; ##
'##' ช่วยให้ฉันค้นหาจุดเริ่มต้นและจุดสิ้นสุดของความคิดเห็นบล็อกได้อย่างง่ายดาย ฉันสามารถติดตัวเลขหลัง '##' ถ้าฉันมีพวกมันมากมาย หากต้องการปิดความคิดเห็นฉันเพียงติด '1' ใน '[]' ฉันยังหลีกเลี่ยงปัญหาบางอย่างที่ฉันเคยมีด้วยคำพูดเดียวในบล็อกที่มีความคิดเห็น