Nie można przekazać znaku „#” jako argumentu wiersza poleceń

Nie można przekazać znaku „#” jako argumentu wiersza poleceń

# zaczyna komentarz w powłokach Uniksa, podobnie jak // w C.

Oznacza to, że gdy powłoka przekazuje argumenty do programu, ignoruje wszystko, co następuje po #. Ucieczka odwrotnym ukośnikiem lub cudzysłowami oznacza, że ​​jest traktowany jak inne parametry, a program powinien działać zgodnie z oczekiwaniami.

2 4 \# 5 6

lub

2 4 '#' 5 6

lub

2 4 "#" 5 6

Zauważ, że # jest znakiem komentarza tylko na początku słowa, więc to również powinno działać:

2 4#5 6

Przekazując wartość za pomocą argumentów wiersza poleceń, należy zapoznać się z poniższymi instrukcjami. Następujące znaki mają specjalne znaczenie dla samej powłoki w niektórych kontekstach i mogą wymagać zmiany znaczenia w argumentach:

` Backtick (U+0060 Grave Accent)
~ Tilde (U+007E)
! Exclamation mark (U+0021)
# Hash (U+0023 Number Sign)
$ Dollar sign (U+0024)
& Ampersand (U+0026)
* Asterisk (U+002A)
( Left Parenthesis (U+0028)
) Right parenthesis (U+0029)
 (⇥) Tab (U+0009)
{ Left brace (U+007B Left Curly Bracket)
[ Left square bracket (U+005B)
| Vertical bar (U+007C Vertical Line)
\ Backslash (U+005C Reverse Solidus)
; Semicolon (U+003B)
' Single quote / Apostrophe (U+0027)
" Double quote (U+0022)
↩ New line (U+000A)
< Less than (U+003C)
> Greater than (U+003E)
? Question mark (U+003F)
  Space (U+0020)1

To dlatego, że używasz sh -jak muszla. Cytuj # lub wyjdź za pomocą \ i zadziała.

Nazywa się to komentarzem w sh . Powoduje to # (spacja-hash) i wszelkie argumenty po nim do odrzucenia. Jest używany podobnie do komentarzy w C, gdzie służy do dokumentowania kodu.

Ciągi zaczynające się od $ nazywane są zmiennymi w sh . Jeśli nie ustawiłeś zmiennej, rozwinie się ona do pustego ciągu.

Na przykład wszystkie te sposoby są prawidłowymi sposobami przekazania # do Twojej aplikacji:

2 4 '#' 5 6
2 4 "#" 5 6
2 4 \# 5 6

A to byłyby prawidłowe sposoby przekazywania ciągu znaków zaczynającego się od $ :

2 4 '$var' 5 6
2 4 '$'var 5 6
2 4 \$var 5 6

Pamiętaj, że zmienne wewnątrz " s są nadal rozszerzone.