sed 's/^.*(//;s/)$//' /path/to/file
Сломать это:
sed
s
tream ed
itor. 's/^.*(//;s/)$//'
сценарий, отправляемый в sed
, который ломается как следующее:
s/^.*(// substitute nothing for the beginning of any line (`^`) followed by anything up until an open-paren (`(`)
s/)$// substitute nothing for a close-paren (`)`) followed immediately by the end of a line
Для того, чтобы включить расширение оболочки внутри скрипта, вы должны передать опцию командной строки bash, это можно сделать в самом скрипте:
#! /bin/bash
set -B #enables expansion
set -X #enables debugging
При первой опции все будет передано в оболочку, как если бы оно было записано в командной строке, вторая опция сгенерирует большое количество выводимых данных, что весьма полезно для просмотра того, что происходит, но вы наверняка захотите отключить его, когда ваш скрипт будет работать корректно.
Во-первых, это поиск:
Чтобы найти все tar-файлы в каталоге, вам потребуется найти $ directory -iname «* .tar»
Примечание: -iname
является расширением gnu, поэтому если вы не используете gnu, вам придется сделать -name * .tar -o-name * .TAR
это почти эквивалентно.
Теперь для добавления рабочей команды tar:
найдите $ directory -iname «* .tar» -print0 | xargs -0 -max-args = 1 tar xf
Все файлы tar будут извлечены в текущий рабочий каталог.
-121--217821-Предположим, что сценарий можно изменить, вместо обязательных параметров (аргументов) следует использовать дополнительные параметры (параметры).
Если у вас есть каждый из первых 7 семи параметров в качестве опций, и они по умолчанию пустые последовательности то можно просто сделать:
./foo bar
Если вы используете POSIX-совместимую оболочку , вы можете использовать утилиту getopts
или программу getopt
. bash
- как и большинство оболочек - предлагает getopts
в качестве встроенного. Любой способ проще, чем свернуть собственный синтаксический анализатор командной строки.
Если вы не реализуете что-то вроде последних X непозиционных аргументов являются значениями для последних Y аргументов и X-Y опционных аргументов, вы должны предоставить последовательности опций перед каждой из 7 (теперь пустых) последовательностей, если вы хотите установить любой из них. Однако это не является обычной практикой, обычно вариант всегда является вариантом, а аргумент - аргументом, и порядок «вставки» варианта является свободным.
-121--32262- Найдена моя собственная ошибка. Это должно было быть # !/bin/bash
. Спасибо @ steeldriver за наконечник