Zmiana polecenia
Inną opcją jest użycie polecenia Podstawienie . Zawijanie polecenia $()
spowoduje uruchomienie polecenia i zastąpienie polecenia jego wynikiem.
cat $(find ./inhere -size 1033c 2> /dev/null)
stanie się
cat ./inhere/file1 .inhere/file3
Jest to mniej więcej równoważne użyciu starszego stylu zawijania poleceń za pomocą tykania wstecz:
cat `find ./inhere -size 1033c 2> /dev/null`
Więcej szczegółów z dokumentów powiązanych powyżej
Bash wykonuje rozwinięcie, wykonując polecenie w środowisku podpowłoki i zastępując podstawienie polecenia standardowym wyjściem polecenia, usuwając wszelkie końcowe znaki nowej linii. Osadzone znaki nowej linii nie są usuwane, ale mogą być usuwane podczas dzielenia słów. Podstawienie polecenia $(cat file)
można zastąpić równoważnym, ale szybszym $(< file)
.
Gdy stosuje się w starym stylu postać backquote podstawienia, ukośnikowe zachowuje dosłownym znaczeniu, z wyjątkiem, gdy następnie $
, `
albo \
. Pierwszy cudzysłów nie poprzedzony odwrotnym ukośnikiem kończy podstawianie poleceń. Podczas korzystania z $(command)
formularza wszystkie znaki między nawiasami tworzą polecenie; żaden nie jest traktowany specjalnie.
Podstawienia poleceń mogą być zagnieżdżone. Aby zagnieżdżać się podczas korzystania z formularza z cudzysłowem, unikaj wewnętrznych cudzysłowów za pomocą odwrotnych ukośników.
Jeśli podstawienie pojawia się w podwójnym cudzysłowie, dzielenie słów i rozwijanie nazw plików nie są wykonywane w wynikach.
Zobacz inną odpowiedź na kilka dobrych przykładów użycia.