Необходимо использовать команду уничтожения с-9 опциями.
$ kill -9 pid
Я отправляю сигнал SIGKILL уничтожить процесс, который является самым сильным сигналом всех.
Вы закрываетесь в то время как перед если.
while read filename
do
echo "$filename"
if [ -s $filename ]
then
tail -10 $filename | grep date '+%Y-%m-%d' >> $lastlines1
echo "- Next Error File - " >> $lastlines1
else
echo " no errrors"
fi
done
Давайте добавим некоторые новые строки и добавление отступа:
1 while read filename; do
2 echo "$filename"
3 if [ -s $filename ]; then
4 tail -10 $filename | grep date '+%Y-%m-%d' >> $lastlines1
5 echo "- Next Error File - " >> $lastlines1
6 done
7 else
8 echo " no errrors"
9 fi
строки 6 и 9, кажется, подкачиваются. Другими словами, while-do-done
и if-then-else-fi
пункты накладываются. Который является неправильным в оболочке (и большинство других языков программирования).
Необходимо использовать vim
редактор для сценариев, это будет выставочный текст КРАСНОГО цвета если тот синтаксис неправильно
while read FileName
do
echo "${FileName}"
if [ -s "${FileName}" ]; then
tail -10 $FileName | grep "date '+%Y-%m-%d'" >> "${lastlines1}"
echo "- Next Error File - " >> "${lastlines1}"
else
echo " no errrors"
fi
done
vim
волшебно не исправит код, так же, как другой редактор (кроме, возможно, nano
без-w), не повредит его... Это действительно делает синтаксические ошибки открытия легче хотя... Установка vim
на некотором не-Linux системы могут быть довольно раздражающими...
– Gert van den Berg
02.01.2013, 14:32
Необходимо завершиться if
оператор перед do while
. При попытке только отозваться эхом no errors
однажды, если никакие файлы не найдены, необходимо использовать флаг для указания на это.
errorCount=0
while read filename
do
echo "$filename"
if [ -s $filename ]
then
tail -10 $filename | grep date '+%Y-%m-%d' >> $lastlines1
echo "- Next Error File - " >> $lastlines1
errorCount=$(($errorCount + 1))
fi
done
if [[ $errorCount -eq 0 ]]
then
echo " no errors"
fi
Иногда эта ошибка возникает из-за неожиданных символов CR в файле, обычно из-за того, что файл был создан в системе Windows, которая использует окончания строк CR. Вы можете исправить это, запустив dos2unix
или tr
, например:
tr -d '\015' < yourscript.sh > newscript.sh
Это удалит все символы CR из файла, и в новом файле сценария оболочки вы не получите эту ошибку.