Похоже, что gpg-агент не понимает понятия "ключ" без парольной фразы. В таком случае, вы вообще не хотите ssh-add
ваших ключей без кодовой фразы к gpg-agent
, просто дайте SSH найти их самому. Чтобы отменить кэширование, мне нужно было удалить каталог ~/.gnupg
; после этого я мог использовать свой незащищенный ключ без всяких проблем. Хотелось бы надеяться, что есть более безопасный способ удалить кэшированные gpg ключи, но я не могу его найти.
Вам придется извлечь подстроку ID
из имен файлов. Один из способов сделать это - расширить параметры, например. ${var:offset: length}
, поэтому в вашем случае var
- это f
ilename, offset - 5
(order
) и length - ${#f}-9
(то есть, общая длина ${#f}
минус суммарная длина порядка
и . log
, что составляет 9
символов):
for f in order*.log
do
ID=${f:5:${#f}-9}
grep -- "$ID" "$f" > "$ID".log
done
или, если вы предпочитаете однострочный перевод:
for f in order*.log; do ID=${f:5:${#f}-9}; grep -- "$ID" "$f" >" $ID".log; done
В качестве альтернативы вы можете использовать awk
для применения одного и того же действия к нескольким файлам:
awk '
FNR==1{
if(fname)close(fname)
id=substr(FILENAME, 6, length(FILENAME)-9)
fname=id".log"
}
$0 ~ id{
print > fname
}
' order*.log
Это делает все файлы одним вызовом awk
, избегая цикла оболочки. В одной строке:
awk 'FNR==1{if(f)close(f);id=substr(FILENAME, 6, length(FILENAME)-9);f=id".log"} $0~id{print > f}' order*.log