Я намагаюся створити скрипт, який видалить певні частини файлу txt, наповнені інформацією про стан та іншим різним текстом. Я не можу закінчити головне, якщо твердження. Також я намагаюся змусити його видалити найстарішу інформацію про стан, ввівши команду date в скрипт, який генерує output.txt. Чи є спосіб змусити його видалити найдавнішу інформацію. Я в основному намагаюся завершити операцію if. Дякую. (Також спочатку у мене було інше, якщо як у Еліфа, але я отримав ті самі результати.)
./count.sh: рядок 30: помилка синтаксису поблизу несподіваного маркера. else'
./count.sh: line 30:
'
WCOUNT=$(wc -l output.txt $1 | awk '{print $1}')
if [[ $WCOUNT -gt 50 ]]; then
if [[ "grep CLIENTSTART output.txt" != null ]]; then
echo $WCOUNT
sed -i '/\*\*\*CLIENTSTART/,/CLIENTEND\*\*\*/ d' output.txt
echo $WCOUNT
else if [[ -n "grep DHCPSTART output.txt" ]]; then
echo $WCOUNT
sed -i '/\*\*\*DHCPSTART/,/DHCPEND\*\*\*/ d' output.txt
echo $WCOUNT
else if [[ -n "grep DNSSTART output.txt" ]]; then
echo $WCOUNT
sed -i '/\*\*\*DNSSTART/,/DNSEND\*\*\*/ d' output.txt
echo $WCOUNT
else if [[ -n "grep WEBSTART output.txt" ]]; then
echo $WCOUNT
sed -i '/\*\*\*WEBSTART/,/WEBEND\*\*\*/ d' output.txt
echo $WCOUNT
else
echo "Cannot help you"
fi
else
echo "You're good, homie. It's under 500"
fi
elif
, як у відповіді Метта повинно запобігти unexpected token else
помилці. Якщо ви все ще бачите це повідомлення, чи можете ви показати нам elif
версію вашого сценарію, яка його виробляє?
wc|awk
конвеєр фактично виводить три числа, які використовуються як значення WCOUNT; це справді те, що ти хочеш? Якщо ви хочете тільки кількість рядків в одному файлі, вам не потрібно AWK, тільки перепризначення:WCOUNT=$(wc -l <output.txt)
. Також вашіif [[ "grep something output.txt" ]]
тести насправді не розглядають вміст файлу output.txt; після виправлення вкладених файлів, як відповіли, усі тести будуть / завжди будуть успішними незалежно від вмісту файлу.