Zajímalo by mě, jestli existuje způsob, jak komentovat řadu řádků ve skriptu Shell. Jak bych to mohl udělat? Můžeme použít/* */v jiných programovacích jazycích. To je nejužitečnější, když konvertuji/používám/upravuji jiný skript A chci zachovat původní řádky místo mazání.
Najít a prefix # pro všechny řádky, které se nepoužívají, je těžkopádné.
Řekněme, že ve stopách je 100 řádků v následných řádcích, které se nepoužívají. Chci je všechny komentovat najednou. Je to možné?
if false
then
...code...
fi
false
vždy vrátí hodnotu false, takže kód bude vždy přeskočen.
Nejuniverzálnější a nejbezpečnější metodou je uvedení komentáře do neplatné citace here-document
, jako je tato:
<<"COMMENT"
This long comment text includes ${parameter:=expansion}
`command substitution` and $((arithmetic++ + --expansion)).
COMMENT
Výčet výše uvedeného oddělovače COMMENT
je nutný k tomu, aby se zabránilo expanzi parametru , Substituci příkazů a aritmetické expanzi, ke které by došlo Jinak, protože manuál Bash stavy a standard POSIX Shell určuje .
Ve výše uvedeném případě by necitování COMMENT
mělo za následek, že proměnná parameter
Bude přiřazena text expansion
, pokud by byla prázdná nebo unset, provedení příkazu command substitution
, zvýšení proměnné arithmetic
a dekrementace proměnné expansion
.
Porovnání dalších řešení:
Použití if false; then comment text fi
vyžaduje, aby text komentáře byl Syntakticky správný Bash kód, zatímco přirozené komentáře často nejsou, pokud Pouze pro možné nevyvážené apostrofy. Totéž platí pro konstrukci : || { comment text }
.
Uvedení komentářů do argumentu jednorázového příkazu void, jako v :'comment
text'
, má nevýhodu neschopnosti zahrnout apostrofy. Dvojité Argumenty, jako v :"comment text"
, stále podléhají expanzi parametrů, Substituci příkazu a aritmetické expanzi, stejně jako nekótované Zde-obsah dokumentu a mohou vést k vedlejší účinky popsané výše.
Použití skriptů a editorů pro automatické prefixy každého řádku v bloku S '#' má nějaké zásluhy, ale neodpovídá přesně na otázku.
Můžete také napsat víceřádkové komentáře pomocí:
: '
comment1comment1
comment2comment2
comment3comment3
comment4comment4
'
Podle Bash Reference pro vestavěné Bourne Shell
: (dvojtečka)
: [argumenty]
Neudělejte nic víc než rozšiřování argumentů a provádění přesměrování. Stav návratu je nula.
Díky Ikramovi za to, že to ukázal v příspěvku Shell skriptu dal více řádkových komentářů
Můžete použít dokument 'here' bez příkazu k jeho odeslání.
#!/bin/bash
echo "Say Something"
<<COMMENT1
your comment 1
comment 2
blah
COMMENT1
echo "Do something else"
Textové editory mají úžasnou funkci nazvanou vyhledávání a nahrazování. Neřeknete, jaký editor používáte, ale protože skripty Shell mají tendenci být * nix a používám VI, zde je příkaz komentovat řádky 20 až 50 nějakého skriptu Shell:
:20,50s/^/#/
: || {
your code here
your code here
your code here
your code here
}
Podle tohoto webu :
#!/bin/bash
foo=bar
: '
This is a test comment
Author foo bar
Released under GNU
'
echo "Init..."
# rest of script
Co když si prostě zabalíte svůj kód do funkce?
Takže tohle:
cd ~/documents
mkdir test
echo "useless script" > about.txt
Stává se tímto:
CommentedOutBlock() {
cd ~/documents
mkdir test
echo "useless script" > about.txt
}
V závislosti na editoru, který používáte, existují některé zkratky pro komentář bloku řádků.
Dalším řešením by bylo dát kód do podmíněného bloku "if (0)";)