Pytania otagowane jako command-substitution

Pytania dotyczące podstawiania poleceń powłoki (takich jak $ (polecenie) lub `polecenie`), ich mechanizmu, poprawnej składni itp. Nie należy ich mylić z aliasami.

5
Używanie wygenerowanej listy nazw plików jako listy argumentów - ze spacjami
Próbuję wywołać skrypt z listą nazw plików zebranych przez find. Nic specjalnego, po prostu coś takiego: $ myscript `find . -name something.txt` Problem polega na tym, że niektóre ścieżki zawierają spacje, więc przy interpretacji argumentów dzielą się one na dwie nieprawidłowe nazwy. Zazwyczaj otaczałbym te nazwiska cudzysłowami, ale tutaj są …



3
Błędy zalewkowania w podstawianiu poleceń za pomocą „-o errtrace” (tj. Ustaw -E)
Zgodnie z tym podręcznikiem : -E (także -o errtrace) Jeśli jest ustawiony, każda pułapka na ERR jest dziedziczona przez funkcje powłoki, podstawienia poleceń i polecenia wykonywane w środowisku podpowłoki. Pułapka ERR zwykle nie jest dziedziczona w takich przypadkach. Jednak muszę to interpretować nieprawidłowo, ponieważ następujące działania nie działają: #!/usr/bin/env bash …

5
pliki grep z listy
Próbuję uruchomić grep na liście kilkuset plików: $ head -n 3 <(cat files.txt) admin.php ajax/accept.php ajax/add_note.php Jednak pomimo tego, że szukam ciągu, o którym wiem, że znajduje się w plikach, następujące pliki nie wyszukują plików: $ grep -i 'foo' <(cat files.txt) $ grep -i 'foo' admin.php The foo was found …

2
Zagnieżdżone cytaty w podpowłokach
Powiedzmy, że muszę użyć cudzysłowów do enkapsulacji danych wyjściowych podpowłoki, takich jak: DATA="$(cat file.hex | xxd -r)" Ale muszę zagnieżdżać tego rodzaju rzeczy, takie jak: DATA="$(cat file.hex | xxd -r | tr -d \"$(cat trim.txt)\")" Nie mogę używać pojedynczych cudzysłowów, ponieważ nie rozszerzają one zawartych w nich zmiennych. Wycofywanie cytatów …


3
Wielowymiarowy dla pętli
Czy istnieje sposób na określenie wielu zmiennych (nie tylko liczb całkowitych) w forpętlach w bash? Mogę mieć 2 pliki zawierające dowolny tekst, z którym musiałbym pracować. Potrzebuję funkcjonalnie czegoś takiego: for i in $(cat file1) and j in $(cat file2); do command $i $j; done Jakieś pomysły?

3
Jak wygenerować argumenty dla innego polecenia poprzez podstawienie polecenia
W następstwie: nieoczekiwane zachowanie podczas podstawiania poleceń powłoki Mam polecenie, które może przyjąć ogromną listę argumentów, z których niektóre mogą zawierać spacje (i prawdopodobnie inne rzeczy) Napisałem skrypt, który może wygenerować dla mnie te argumenty z cudzysłowami, ale muszę skopiować i wkleić dane wyjściowe np ./somecommand <output on stdout with …

4
Zrozumienie zastępowania polecenia Bash do odczytu pliku
Próbuję zrozumieć, jak dokładnie Bash traktuje następujący wiersz: $(< "$FILE") Według strony podręcznika Bash jest to równoważne z: $(cat "$FILE") i mogę podążać za rozumowaniem tej drugiej linii. Bash wykonuje rozszerzanie zmiennej $FILE, wprowadza podstawienie polecenia, przekazuje wartość $FILEdo cat, cat przekazuje zawartość $FILEstandardowego wyjścia, podstawianie polecenia kończy się przez …

2
Przydziały są jak polecenia ze statusem wyjścia, z wyjątkiem sytuacji, gdy istnieje zamiana poleceń?
Zobacz następujące przykłady i ich wyniki w powłokach POSIX: false;echo $?lub false || echo 1:1 false;foo="bar";echo $?lub foo="bar" && echo 0:0 foo=$(false);echo $?lub foo=$(false) || echo 1:1 foo=$(true);echo $?lub foo=$(true) && echo 0:0 Jak wspomniano w najczęściej głosowanej odpowiedzi na /programming/6834487/what-is-the-variable-in-shell-scripting : $? służy do znalezienia wartości zwracanej ostatnio wykonanej …



1
Dlaczego nie ma nowego wiersza na końcu cytowania podpowłoki i przekazywania wyników do echa?
Kiedy robię, ls | grep pngwyjście grep jest: 2015-05-15-200203_1920x1080_scrot.png 2015-05-16-025536_1920x1080_scrot.png (nazwa pliku, nowa linia, nazwa pliku, nowa linia) następnie echo $(ls | grep png)wyjścia: 2015-05-15-200203_1920x1080_scrot.png 2015-05-16-025536_1920x1080_scrot.png (nazwa pliku, spacja z dzielenia słów, nazwa pliku, nowa linia !! z echa !!) Wszystko jest w porządku, ale kiedy to zrobię, aby zapobiec …

1
rozpoczynanie vima od podstawiania poleceń
Pracuję nad projektem na dwóch różnych komputerach - jednym z systemem Mac OSX 10.8.3 i jednym z systemem Red Hat Enterprise Linux. Na komputerze Mac mogę to zrobić: vim $(ls -R */*.@(h|cpp) */*/*.@(h|cpp)) i wszystko działa dobrze. W systemie Linux nie działa. Wszystkie działają dokładnie tak, jak się spodziewam: ls …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.