Zasadniczo chcę „wyciągnąć” pierwsze wystąpienie -infz listy parametrów. (Pozostałe parametry zostaną przekazane do innego polecenia.) Skrypt, który mam, ma następującą strukturę: #!/bin/sh <CODE> for POSITIONAL_PARAM in "$@" do <CODE> if [ "$POSITIONAL_PARAM" = '-inf' ] then <PLUCK $POSITIONAL_PARAM FROM $@> break fi <CODE> done <CODE> some-other-command "$@" # end of …
Mam aplikację otoki, w której muszę pozwolić użytkownikowi określić niestandardowe opcje przekazywania do symulatora. Chcę jednak upewnić się, że użytkownik nie wstrzykuje innych poleceń za pomocą opcji użytkownika. Jaki jest najlepszy sposób na osiągnięcie tego? Na przykład. Użytkownik zapewnia: -a -b Aplikacja wykonuje: mysim --preset_opt -a -b Jednak nie chcę, …
Nie wiem, jak dołączyć opcjonalne argumenty / flagi podczas pisania skryptu bash dla następującego programu: Program wymaga dwóch argumentów: run_program --flag1 <value> --flag2 <value> Istnieje jednak kilka opcjonalnych flag: run_program --flag1 <value> --flag2 <value> --optflag1 <value> --optflag2 <value> --optflag3 <value> --optflag4 <value> --optflag5 <value> Chciałbym uruchomić skrypt bash, aby pobierał …
Działa to w wierszu poleceń powłoki (bash, myślnik): [ -z "" ] && echo A || echo B A Jednak próbuję napisać skrypt powłoki POSIX , zaczyna się tak: #!/bin/sh [ "${#}" -eq 1 ] || echo "Invalid number of arguments, expected one."; exit 1 readonly raw_input_string=${1} [ -z "${raw_input_string}" …
Biorąc pod uwagę ten bash: PARMS='-rvu' PARMS+=" --delete --exclude='.git'" echo $PARMS rsync ${PARMS} . ${TARGET} Echo pokazuje ciąg PARMS zgodnie z oczekiwaniami, nie wyświetla się żaden błąd, ale rsync cicho działa tak, jakby opcje dodane przez + = nie istniały. Działa to jednak zgodnie z oczekiwaniami: PARMS='-rvu' rsync ${PARMS} --delete …
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 …
Jestem na Ubuntu. Skopiowałem kilka argumentów (oddzielonych znakiem nowej linii) i mogę użyć Xsel, aby je wydrukować w ten sposób $ xsel arg1 arg2 arg3 arg4 ... Teraz chcę użyć każdego z tych argumentów do innego polecenia i wykonać to polecenie tyle razy, ile jest argumentów. Więc próbowałem $ xsel …
Próbuję znaleźć sposób zarejestrowania określonej instancji, rrdtoolaby sprawdzić, czy ścieżka, którą otrzymuje, jest niepoprawna. Wiem, że mógłbym owinąć plik wykonywalny w skrypcie powłoki, który rejestrowałby parametry, ale zastanawiałem się, czy istnieje bardziej specyficzny sposób monitorowania tego przez jądro, być może wywołanie zwrotne systemu plików, które widzi, kiedy określony / proc …
Mam katalog z plikami z 2010 roku. Chcę usunąć wszystkie pliki starsze niż 500 dni i próbowałem: find /var/log/arc/* -type f -mtime +500 -delete {}\; Ale dostaję to: -bash: /usr/bin/find: Argument list too long Jak wiem, oznacza to, że plików jest zbyt wiele i findnie mogę ich obsłużyć. Ale nawet …
Mam następującą funkcję: bar() { echo $1:$2; } Wołam tę funkcję z innej funkcji foo. foosam nazywa się w następujący sposób: foo "This is" a test Chcę uzyskać następujące dane wyjściowe: This is:a Oznacza to, że barotrzymywane argumenty powinny być tymi samymi tokenami, które przekazuję foo. Jak foonależy to zrealizować? …
Najpierw odetnij banalne, ale nie dające się zastosować odpowiedzi: nie mogę użyć ani sztuczki find+, xargsani jej wariantów (podobnie jak w findprzypadku -exec), ponieważ muszę użyć kilku takich wyrażeń na rozmowę. Wrócę do tego na końcu. Teraz dla lepszego przykładu zastanówmy się: $ find -L some/dir -name \*.abc | sort …
W skrypcie powłoki rozumiem, że "$@"rozszerzam się na argumenty skryptu, cytując je w razie potrzeby. Na przykład przekazuje argumenty skryptu do gcc: gcc -fPIC "$@" <<<Jednak podczas korzystania ze składni bash pass-to-stdin "@$"nie działa tak, jak bym tego oczekiwał. #!/bin/bash cat <<< "$@" Wywołanie skryptu jako ./test.sh foo "bar baz"daje …
Używam finddo lokalizowania i usuwania plików kopii zapasowych, ale chcę wykluczyć niektóre katalogi z wyszukiwania. Nazwy plików kopii zapasowych mógł zakończyć w .bck, bak, ~, lub backup. Kod minimalnego przykładu roboczego (MWE) z tylko trzema katalogami do wykluczenia to: #! /bin/bash find . -type d \( -path "./.*" -o -path …
Zgodnie z ARG_MAX maksymalna długość argumentów dla nowego procesu , jak się wydaje, ARG_MAXjest niepoprawnie (lub przynajmniej dwuznacznie) zdefiniowana na moim komputerze Mac Mini 3,1 z systemem Ubuntu 12.04: $ getconf ARG_MAX # arguments 2097152 $ locate limits.h | xargs grep -ho 'ARG_MAX[ \t]\+[0-9]\+' | uniq | cut -d ' …
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.