Otrzymałem oczekiwany wynik z `...`, ale nie udało mi się z $ (...)
kill $(ps ux | grep S..\.tcl | grep -v grep | awk '{print $2}')
Illegal variable name.
kill `ps ux | grep S..\.tcl | grep -v grep | awk '{print $2}'`
(kill expected processes)
Po przejrzeniu google stwierdziłem, że niektórzy mówią, że są one wymienne, ale nie w tym przykładzie. Jaka jest różnica między $ (...) a `...` w Bash?
Odpowiedzi:
zrobiłem
i znalazłem wiadomość w / bin / csh. Wygląda na to, że uruchamiasz csh not bash podczas wydawania polecenia. na przykład:
źródło
csh
nie jest skorupą Bourne'a! Zasady cytowania i powiązana z nimi funkcjonalność są zupełnie inne. Jeśli używasz csh, nie oczekuj, że wszystko zadziała tak, jak działa w bash (lub, w ogóle, działa w ogóle;csh
jest dość okropne)Niektóre objaśnienia dotyczące znaku wstecznego (`) również nazywają podstawianie poleceń:
https://unix.stackexchange.com/questions/27428/what-does-backquote-backtick-mean-in-commands
https://stackoverflow.com/questions/4708549/whats-the-difference-between-command-and-command-in-shell-programming
W bash (git-bash) również otrzymuję różne wyniki. Uruchomienie skryptu w pliku, powiedz /c/pathToScript/test.sh
$ (Pwd) działa w podpowłoce utworzonej podczas uruchamiania procesu.
źródło