2017-09-23 11 views
7

Dzisiaj zobaczyłem, że skrypt basha używa dwukropka do oznaczenia komentarza. Jaka jest różnica między dwukropkiem a znakiem skrótu?Różnica między: i # dla komentarzy Basha

: This is a comment. 
# This is also a comment. 

Po pierwsze, wiem, że nie można używać dwukropka o komentarz spływu:

cd somedir : This won't work as a comment. 

Ale fakt, że powyższy przykład działa ma mnie zdziwiony, jak : jest oceniany.

+1

Możesz przeczytać pokrewną dyskusję https://stackoverflow.com/questions/3224878/what-is-the-purpose-of-the-colon-gnu-bash-builtin – slevy1

+0

Aby uzyskać końcowy komentarz, musisz użyj ';:'. Żartuję, zobacz odpowiedź tego faceta :-) – paxdiablo

Odpowiedz

9

: jest po prostu aliasem true i true ignoruje argumenty:

# Does nothing: 
true foo bar etc hello 

# Does the same: 
: foo bar etc hello 

to nie jest komentarz i nigdy nie powinny być wykorzystywane jako komentarz, ponieważ wszystkie jej argumenty są nadal analizowane i oceniane:

: This "comment" actually executes this command: $(touch foo) 
ls -l foo 

lub tutaj, gdzie podświetlanie składni StackOverflow podnosi, że polecenie w środku jest w rzeczywistości tylko tekstem, nawet jeśli człowiek nie:

: The command below won't run: 
echo "Hello World" 
: because the surrounding "comments" each contain a ' characters 
1

':' jest poleceniem wbudowanym w powłokę, które nie robi nic, tylko rozszerza argumenty i zwraca true. Od bash man page:

: [arguments] 
No effect; the command does nothing beyond expanding arguments 
and performing any specified redirections. A zero exit code is 
returned. 

# jest komentarz. Ale działa tylko dla pojedynczych linii.

Możesz przeczytać więcej o komendzie ":" here i lepszej odpowiedzi here.

Powiązane problemy