Jeśli mam program o nazwie „prog”, który wymaga tylko jednego argumentu, mogę napisać:
./prog <<< 1
Ale jeśli mam program, który wymaga 2 argumentów, dlaczego to nie działa:
./prog <<< 2 3
Nie mogłem znaleźć odpowiedzi Googling. Jak to może działać?
Uwaga: Potrzebuję tego, aby napisać .sh
bash
shell-script
jemino
źródło
źródło
<<<
nie dostarcza argumentów , dostarcza danych wejściowych . Linia wejściowa składająca się z2
, spacji3
i nowej linii to jedna linia wejściowa , a nie dwa argumenty.Odpowiedzi:
<<<
Operator jest udokumentowane wbash(1)
podręczniku. Dotyczy „ciągów tutaj” (podobnych w koncepcji do „dokumentów tutaj”, które od wieków są w składni powłoki).Składnia:
… Rozwija się
word
i przekazujecommand
jako standardowe wejście.Jest to równoważne z:
Jeśli naprawdę chciałeś przekazać zarówno 1, jak i 2 jako standardowe wejście (nie argumenty / parametry), możesz to zrobić za pomocą:
lub
Zasadniczo musisz uciec spacji między 1 a 2, aby nie dzieliła ona danych wejściowych na dwa słowa.
źródło
Nie mogłem znaleźć żadnego odniesienia do operatora „<<<” dla bash, ale wydawało się, że wziął tekst natychmiast po operatorze i przeanalizował go jako pierwszą zmienną.
Jeśli piszesz skrypt BASH, nie jest to konieczne. Możesz po prostu użyć $ X dla każdej zmiennej, a następnie dodać zmienne do skryptu. Na przykład:
Jeśli więc zapiszesz powyższy plik jako „test.sh”, spraw, aby był wykonywalny, uruchom go jako
./test.sh hello world
Wyprowadzi Zastosowanie: ./test.sh zmienna1 zmienna2 Wartość zmiennej 1 to hello Wartość zmiennej 2 to hello world
0 $ = nazwa skryptu. Jeśli chcesz przekazać 2 parametry ze spacjami, na przykład „Hello World” i „This is a test”, nazwałbyś to ./test.sh „Hello World” „his is a test”
źródło
Oto jak rozwiązałem mój problem:
źródło