En primer lugar, el error que está recibiendo se debe a que algún script está intentando ejecutar mysql sin contraseña como root :o usted es root o está usandosudo
:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Suponiendo que su usuario root de MySQL tenga contraseñas, necesitará acceder o interactuar con la CLI de MySQL como :mysql -u username -p
y la contraseña se solicitarán a continuación.
Una solución fácil (pero no recomendada )sería eliminar la contraseña de MySQL para root, realizar toda la instalación y luego volver -a establecer la contraseña. Esto permitirá que el script de instalación se complete correctamente.
La forma correcta de arreglar esto sería ubicar manualmente el comando CREATE DATABASE
en el script de instalación y ejecutarlo manualmente usando la sintaxis del comando mysql
arriba (usando el nombre de usuario y la contraseña ).
cd ${installation_path}/phpmyadmin/examples
# mysql -u root -p < create_tables.sql
(esto ejecutará el script que está fallando en su instalación y solicitará la contraseña)# systemctl restart nginx
Fuentehttp://howtolamp.com/lamp/phpmyadmin/4.2/installing#configuration-storage
Además, el documento de phpmyadmin establece pasos específicos para Debian, que supongo que serán similares a Raspbian:https://docs.phpmyadmin.net/en/latest/setup.html#linked-tables
Решение здесь состоит в том, чтобы использовать встроенные команды в оболочке, так как тогда не будет выполняться несколько fork/exec на строку, что относительно очень дорого.
Я бы сделал так:
#! /bin/bash
echo -n "Enter the logfilename : "
read logfilename
echo "Entered name : $logfilename"
echo "outside the while loop"
let success=0
let failure=0
let total=0
failedtests=()
while read line; do
case "$line" in
*Begin\ of\ *) echo $line
failedtests+=( ${line/Begin of /} )
;;
*PASSED*) ((success++));;
*FAILED*) ((failure++));;
*End\ of\ *) ((total++));;
esac
done < "$logfilename"
echo "Total testcases : $total"
echo "Total testcase with Success : $success"
echo "Total testcase with Failure : $failure"
echo "Failed tests:" ${failedtests[@]}
Вы можете использовать case
для сопоставления шаблонов глобусов. Согласно вашему примеру данных (, у которых есть «Пройдено», а не «ПРОШЛО», для которых вы выполняете поиск ), начальный *
каждого шаблона может быть опущен, однако с ним он точно соответствует использованию grep.
Я также покончил с переменной DONE
, так как вы бесполезно перебираете в цикле последнюю пустую строку (, полученную в результате конца -файла -).
РЕДАКТИРОВАТЬ :Добавлен сбор и отображение неудачных тестов. Они собраны в массиве bash failedtests
. ${line/Begin of /}
приводит к содержимому line
с удаленной строкой.Наконец, полное содержимое массива отображается с помощью ${failedtests[@]}
.
Вы можете использовать следующий сценарий, если ваш AWK поддерживает переменную IGNORECASE
для принудительного сравнения без учета регистра. (GNU AWK, например. в Linux поддерживает это.)
Если ваш AWK не поддерживает IGNORECASE
, вы можете
/[Pp][Aa][Ss][Ss][Ee][Dd]/
вместо /passed/
и т. д. или tolower
со значением, которое необходимо сопоставить, например. tolower($0) ~ /passed/
вместо /passed/
и т. д. awk 'BEGIN { IGNORECASE=1; }
/^begin of / { print; count=1; passed=failed=0;}
/^end of / { count=0; totalcount++; if(failed)failcount++;else if(passed)passcount++;}
/passed/ && count { passed=1; }
/failed/ && count { failed=1; }
END {
print "Total testcases : " totalcount;
print "Total testcase with Success : " passcount;
print "Total testcase with Failure : " failcount; }' logfile
С помощью этого ввода (в файлеlogfile
)
Begin of A_HL_INT_GPRS_CGDSCONT_0000
Passed
foo
End of A_HL_INT_GPRS_CGDSCONT_0000
Begin of A_HL_INT_GPRS_CGDCONT_0002
bar
passed
FAILED
End of A_HL_INT_GPRS_CGDCONT_0002
Begin of foo
failed
End of bar
foo
Passed
FAILED
bar
Я получаю такой результат
Begin of A_HL_INT_GPRS_CGDSCONT_0000
Begin of A_HL_INT_GPRS_CGDCONT_0002
Begin of foo
Total testcases : 3
Total testcase with Success : 1
Total testcase with Failure : 2
Примечания:
Отредактированная версия скрипта считает passed
или failed
только один раз между строками begin of...
и end of...
, failed
имеет приоритет над passed
.
Сценарий не проверяет совпадение идентификаторов в begin of...
и end of...
.