попробуйте
cat a.txt | grep -f - b.txt
или (если вам нравится < ()
)
grep -f <(cat a.txt) b.txt
-121--251161- С помощью zsh
:
upToFirst5words=(${$(my-cmd)[1,5]})
Предположим, что по умолчанию используется значение IFS по умолчанию, которое будет разделено на пустые последовательности (космос, tab, newline) или нулевые значения.
Вы можете сделать:
argv=(${$(my-cmd)[1,5]})
Для этих 5 слов быть в $1
, $2
... $5
.
Примечание: Я предположил, что вы обучаете себя Башу. Не используйте этот код в производстве. find «$ directory» -maxdepth 1 -type d
доставит вам каталоги, -type f
- файлы.
Так как он жалуется на строку 16, давайте посмотрим на него:
$dirs=`ls $1`
Если вы хотите назначить переменной, вы не должны включать $
. Полагаю, вы имели в виду:
dirs=`ls $1`
То, что происходит сейчас, это:
$ dirs
, вероятно, пуст, так заменен ничем. ls
, а ее выходные данные подставляются в 'command'. Calibre
, оставляя команду: = Calibre x y z...
= Calibre
не является допустимой командой, поэтому ошибка. Однако нас там еще нет: это пойдет не так, если в любом из имен файлов есть места. Чтобы исправить это, необходимо сделать больше:
IFS = $ '\n '
где-то перед циклом для
. При этом разделитель полей устанавливается на символ строки, который останавливает цикл для
от разделения файлов на места или вкладках (технически возможно также, чтобы файл имел строку строки в имени файла: вы вряд ли когда-нибудь столкнетесь с таким файлом, и это не вызовет серьезных проблем в этом случае, если вы столкнетесь с таким файлом, но стоит знать о возможности в случае, если это когда-либо имеет значение). -f
и -d
, нужно поставить кавычки $ i
. (Так: [-f «$ i»]
и [-d «$ i»]
. Для поддержки каталогов с местами в них необходимо сделать то же самое для $1
, где он используется. По сути, нет никакой разницы между завершением работы или перезагрузкой в отношении сообщения «Требуется перезагрузка системы». И выключение, и перезагрузка очистят его. Однако это применимо только в том случае, если у вас нет нового ожидающего обновления, для полного применения которого требуется перезагрузка, и автоматические обновления могут запускаться в вашей системе с момента «последней перезагрузки», о которой вы упомянули.
Таким образом, вы должны помнить, установлена ли и включена ли ваша система unattended-upgrades
. Если это так, ваша система получает обновления один раз в день или около того, и если у вас настроены автоматические обновления для установки всех доступных обновлений (, а не только безопасности -только обновлений ), тогда она будет автоматически запускаться и устанавливаться автоматически. обновляется в настроенный момент времени. Лучший способ определить что — посмотреть на /var/log/apt/history.log
, где появятся автоматические обновления. Это может объяснить «неожиданное» сообщение «Требуется перезагрузка», поскольку с момента последней перезагрузки ваша система могла получить новые обновления, вызвавшие появление сообщения.
Неважно.
"хвост /var/log/apt/history.log"
показывает автоматическое обновление сегодня утром в 6 утра.
Очевидно, у меня включены автоматические обновления, и время было очень сжатым.