Bash :нет вывода цикла while и есть ли лучшее решение?

Помещение простого текста в файл не менее (или более )безопасно, чем размещение HTML. Что касается сервера, HTML — это обычный текст :, то, что передается по сети, — это в точности <html>...</html>биты, записанные в файле.

В вашем сценарии могут быть другие проблемы с безопасностью, но это не одна из них.

Я бы, однако,поощряйте адаптацию конфигурации вашего веб-сервера, чтобы файл обслуживался как text/plain вместо text/html для технической корректности, хотя практические различия довольно минимальны, (браузеры, вероятно, будут отображать его с фиксированной -шириной вместо переменной ).

0
06.04.2020, 15:19
1 ответ

Предложение:

#!/bin/bash

while true; do
    read -p 'Is signature correct? y/[n]: '

    [[ $REPLY == [Yy]* ]] && break

    echo 'Ok, asking again...'
done

echo 'Signature accepted'

Это реализует бесконечный цикл, из которого пользователь выходит, вводя строку, начинающуюся с yили Y, но которая по умолчанию интерпретирует ввод как «нет».

Если вам нужно проверить Y, y, Yesи yes(, т. е. обрабатывать такие строки, как yup, как "нет" ), используйте

case $REPLY in ([Yy]|[Yy]es) break; esac

вместо теста [[... ]]и break.

1
28.04.2021, 23:18

Теги

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