Похоже на то, что действие at
будет сохранено после перезагрузки, как и ответ here.
Да, они сохраняются после перезагрузки (это просто файлы в спуле).
Файлы, используемые at
, как подробно описано на странице man:
/var/spool/at
Когда вы планируете действие, оно будет сохранено в файле в /var/spool/at/
Как насчет функции оболочки? Нравится
function read_n_verify {
read -p "$2: " TMP1
read -p "$2 again: " TMP2
[ "$TMP1" != "$TMP2" ] &&
{ echo "Values unmatched. Please try again."; return 2; }
read "$1" <<< "$TMP1"
}
read_n_verify domain "Please enter the domain of your web application"
read_n_verify dbrootp "Please enter the app DB root password"
read_n_verify dbuserp "Please enter the app DB user password"
Затем выполните желаемое действие с помощью $domain
, $dbrootp
, $dbuserp
.
$1
используется для переноса имени переменной для более позднего read
из «здесь строки», которая, в свою очередь, используется, поскольку здесь проще, чем (, также можно использовать )«здесь документ».
$2
содержит подсказку (свободный )текст, используемый последним, чтобы разрешить (вид )«неограниченной» длины текста.
Верхний регистр TMP и [... ] &&
"сахарный -синтаксис" (каким бы он ни был )используются по личному предпочтению.
if - then - fi
также можно использовать, и это устранит необходимость в фигурных скобках, которые собирают несколько команд в одну команду, которая будет выполняться как ветвь &&
.
Я бы сделал так:
#!/bin/bash
while [[ $string != 'string' ]] || [[ $string == '' ]]
do
read -p "Please enter the domain of your web application: " string
echo "Please enter the domain of your web application: "
done
Command 1
Command 2
Less typing.
Конечно, вам понадобится такой раздел для всех ваших вопросов.
Кроме того, что есть у вас и у меня, других вариантов нет.