Sí, el uso de un programa pinentry
es obligatorio con GnuPG 2 y posterior.
Esto se deriva de la arquitectura actualizada en uso hoy en día:
pinentry
-programa compatible elegido por el usuario. El uso de un programa pinentry
garantiza que su clave privada permanezca restringida al agente (si es que lo sabe, por supuesto ), sin que tenga que proporcionar la clave privada y la frase de contraseña explícitamente al agente agente (como sucede por ejemplo conssh-add
). También garantiza que las solicitudes de su frase de contraseña sean consistentes, independientemente de la fuente de la solicitud (, la cantidad de seguridad que que proporciona es, como de costumbre, objeto de debate ).
Точно не знаю, что не так с вашим кодом, но возможно, что-то расширяется нежелательным образом из-за переменных без кавычек.
Я сделал следующие улучшения:
#!/bin/bash
FILE1=$1
FILE2=$2
counter=0
while IFS= read -r line; do
printf '%s\n' "$line"
if grep -q "$line" "$FILE2"; then
printf '%d\n' "$((counter++))"
fi
done <"$FILE1"
printf 'counter=%d\n' "$counter"
while read
, а не цикл for
. grep -q
используется для подавления любых выходных данных grep, которые могут быть получены printf '%d\n' "$((counter++))"
используется для сохранения линии printf
, а не echo
, технически более переносим, но в основном это вопрос предпочтений.