Поскольку вы используете bash, я бы не советовал использовать временные файлы, потому что он имеет много предостережений из-за файловой системы (что происходит, если ваш диск заполнен? Что происходит, если файл существует? Что происходит, если вы не не имеют разрешения на запись в базовый каталог (et c.) и из-за ограничений хранения имен файлов в текстовых файлах на основе строк (хотя это не должно быть проблемой для поиска openssl
).
Если вы хотите проанализировать список файлов, вот общий и безопасный способ сделать это:
find / -wholename "*bin/openssl" -print0 | while IFS= read -r -d '' path
do
# Write your code here using the 'path' variable
done
Но поскольку вы храните переменные внутри для l oop они будут ограничены областью действия l oop из-за операции канала между find
и while
. Вы можете обойти эту проблему, используя вместо этого замену процесса:
while IFS= read -r -d '' path
do
# Write your code here using the 'path' variable
done < <(find / -wholename "*bin/openssl" -print0)
Это ведет себя практически так же, как и в предыдущем коде, за исключением того, что область видимости переменной не ограничена l oop.
PS. Вам придется иметь дело с назначением ваших переменных по нескольким путям openssl. Если вы просто скопируете / вставите свой код внутри для l oop, значения compliant
и actual_value
сохранят информацию о последнем пути в l oop, что, вероятно, не то, что вам нужно.