Выполнить поиск строки в файле в bash [дубликат]

Sí, el uso de un programa pinentryes obligatorio con GnuPG 2 y posterior.

Esto se deriva de la arquitectura actualizada en uso hoy en día:

  • Los clientes de GnuPG ya no tratan con material de clave privada, o con frases de contraseña, etc. (en la medida de lo posible; por lo que sé, la única vez que una frase de contraseña pasa por el cliente es cuando la cambias );
  • para respaldar esto, un proceso separado, el agente, almacena claves privadas; se ejecuta como un demonio de nivel de usuario -, se inicia automáticamente cuando un cliente lo necesita;
  • el agente, al ser un demonio, no tiene una terminal “propietaria”, ni sabe cómo obtener información del usuario;
  • la obtención de información del usuario se delega a unpinentry-programa compatible elegido por el usuario.

El uso de un programa pinentrygarantiza 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 ).

1
27.12.2018, 22:50
1 ответ

Точно не знаю, что не так с вашим кодом, но возможно, что-то расширяется нежелательным образом из-за переменных без кавычек.

Я сделал следующие улучшения:

#!/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"

  1. Использование bash для итерации по файлу не идеально, но если его нужно использовать, вам следует использовать цикл while read, а не цикл for.
  2. grep -qиспользуется для подавления любых выходных данных grep, которые могут быть получены
  3. printf '%d\n' "$((counter++))"используется для сохранения линии
  4. Все переменные указаны в кавычках.
  5. printf, а не echo, технически более переносим, ​​но в основном это вопрос предпочтений.
2
27.01.2020, 23:31

Теги

Похожие вопросы