Powiedzmy, że chcę uruchomić polecenie przez Bash w następujący sposób: /bin/bash -c "ls -l" Według strony podręcznika Bash, mógłbym również uruchomić go w następujący sposób: # don't process arguments after this one # | pass all unprocessed arguments to command # | | # V V /bin/bash -c ls -- …
Używając findz grep, można zlokalizować pliki, które pasują do wzorca: # find | grep error ./solr-modifiedSolr4/SolrPhpClient/phpdocs/errors.html ./error_log ./includes/classes/error_log Jednak przy użyciu findsamego pierwszego pliku nie znaleziono: # find . -name error* ./error_log ./includes/classes/error_log Dlaczego nie findlokalizuje errors.htmlpliku, gdy nie jest używany grep? Jak findwyświetla się również ten plik?
Mam skrypt, który odczytuje strumień tekstowy i generuje plik poleceń sed, który jest następnie uruchamiany sed -f. Wygenerowane polecenia sed są następujące: s/cid:image002\.gif@01CC3D46\.926E77E0/https:\/\/mysite.com\/files\/1922/g s/cid:image003\.gif@01CC3D46\.926E77E0/https:\/\/mysite.com\/files\/1923/g s/cid:image004\.jpg@01CC3D46\.926E77E0/https:\/\/mysite.com\/files\/1924/g Załóżmy, że skrypt generujący sedpolecenia jest podobny do: while read cid fileid do cidpat="$(echo $cid | sed -e s/\\./\\\\./g)" echo 's/'"$cidpat"'/https:\/\/mysite.com\/files\/'"$fileid"'/g' >> sedscr done Jak …
StackOverflow odpowiedź z> 3.5K głosów dysponuje ten jeden-liner przypisywania do DIRkatalogu bieżącego skryptu bash: DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" Zaskakują mnie zagnieżdżone podwójne cudzysłowy. O ile wiem, następujące fragmenty są cytowane: "$( cd " "${BASH_SOURCE[0]}" " && pwd )" ... i wszystko inne po prawej stronie …
Używam sed do znajdowania i zastępowania wzorców w plikach SAS, które mam, zamiast zmieniać je indywidualnie. Problem polega na tym, że próbuję zastąpić makrozmienne, a gdy używam ampersand, nie przetwarza to poprawnie. Here's my code: sed -ie 's/user=&uid./user=&sysuserid./g' *_table_*.sas za każdym razem, gdy uruchamiam to polecenie, wydaje się, że dołącza …
Chcę dynamicznie przypisywać wartości do zmiennych za pomocą eval. Działa następujący przykładowy manekin: var_name="fruit" var_value="orange" eval $(echo $var_name=$var_value) echo $fruit orange Jednak gdy wartość zmiennej zawiera spacje, evalzwraca błąd, nawet jeśli $var_valuejest wstawiany między podwójnymi cudzysłowami: var_name="fruit" var_value="blue orange" eval $(echo $var_name="$var_value") bash: orange : command not found Jest jakiś …
W moim pliku .profile zdefiniowałem niektóre zmienne środowiskowe, takie jak: MY_HOME="/home/my_user" ale zmienna nie wydaje się oceniać, chyba że usunę cudzysłowy i ponownie źródła pliku. Uważam, że cytaty są konieczne, jeśli pojawią się spacje, a pojedyncze cudzysłowy są używane, jeśli znaki ucieczki nie są pożądane. Czy ktoś może wyjaśnić znaczenie …
Czytałem o tym, że powinienem zacytować zmienne w bash, np. „$ Foo” zamiast $ foo. Jednak podczas pisania skryptu znalazłem przypadek, w którym działa on bez cudzysłowów, ale nie z nimi: wget_options='--mirror --no-host-directories' local_root="$1" # ./testdir recieved from command line remote_root="$2" # ftp://XXX recieved from command line relative_path="$3" # /XXX …
Ogólna zasada w skryptach powłoki polega na tym, że zmienne powinny być zawsze cytowane, chyba że istnieje ważny powód, aby tego nie robić. Aby uzyskać więcej informacji, niż prawdopodobnie chcesz wiedzieć, spójrz na to świetne pytanie i odpowiedzi: Implikacje bezpieczeństwa związane z zapominaniem o cytowaniu zmiennej w powłokach bash / …
Ten post zawiera dwa osobne pytania, ale myślę, że zgrupowanie ich da więcej kontekstu. Przeszedłem przez to pytanie dotyczące cytatów wokół zmiennych, ale nie do końca rozumiem, co oznacza ekspansja zmiennych . Moje pierwsze pytanie brzmi: Czym jest zmienna ekspansja w systemach Unix / Linux? Druga część mojego pytania dotyczy …
W sekcji 3.1.2.3, zatytułowanej Podwójne cytaty, instrukcja Bash mówi: Umieszczanie znaków w podwójnych cudzysłowach („” ”) zachowuje dosłowną wartość wszystkich znaków w cudzysłowach, z wyjątkiem„ $ ”,„ „”, „\”, a gdy włączone jest rozszerzanie historii, „!”. W tej chwili interesuje mnie pojedynczy cytat ( '). Jego specjalne znaczenie, opisane w …
Najwyższy czas rozwiązać tę zagadkę, która niepokoi mnie od lat ... Spotykałem się z tym od czasu do czasu i myślałem, że to jest właściwa droga: $(comm "$(arg)") I pomyślałem, że moje zdanie jest mocno poparte doświadczeniem. Ale nie jestem już taki pewien. Shellcheck też nie może się zdecydować. Oba …
Dzisiaj wróciłem do domu z pracy (uruchom bash na pudełku Ubuntu) i próbowałem uruchomić kod na moim lokalnym Arch Arch z moim ukochanym Zsh, a polecenia zawiodły? Polecenie znajduje się poniżej, a dane osobowe i adres IP zmieniły się oczywiście ffmpeg -i rtsp://user:pass@my.webserver.org:5554/my-media/media.amp?videocodec=h264 -threads 3 -vcodec copy -f segment -segment_time …
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ą …
Używam GNU bash 4.3.48. Rozważ następujące dwa polecenia, które różnią się tylko jednym znakiem dolara. Polecenie 1: echo "(echo " * ")" Polecenie 2: echo "$(echo " * ")" Ich wyniki są odpowiednio (echo test.txt ppcg.sh ) i * Więc oczywiście w pierwszym przypadku *jest on globowany, co oznacza, że …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.