2014-10-02 2 views
0

довольно noobie вопрос здесь .. думаю. но я не могу заставить этот скрипт работать. Он будет включен в сценарий, который я спросил здесь несколько дней назад (BASH output column formatting). в основном я хочу, чтобы иметь возможность очистить сайт за часть текста и вернуть ответ ONLINE/OFFLINE. Я прошу прощения за плохое форматирование и странные имена переменных. Спасибо, что посмотрели и помогли мне!Bash IF заявление

#!/bin/bash 
printf "" > /Users/USER12/Desktop/domainQueryString_output.txt 
domainCurlRequest="curl https://www.google.com/?gws_rd=ssl" 
ifStatementConditional="grep 'google.com' /Users/USER12/Desktop/domainQueryString_output.txt | wc -l" 
echo $($domainCurlRequest) >> /Users/USER12/Desktop/domainQueryString_output.txt 
    if [ $ifStatementConditional -eq 2 ] ; 
     then second_check="online" 
    else second_check="DOMAIN IS OFFLINE" 
    fi 
echo $second_check 

я получаю следующее сообщение об ошибке при попытке запустить этот скрипт

/Users/USER12/Desktop/domain_status8working.sh: line 6: [: too many arguments 

я попытался переписать еще один способ, но получил те же ошибки, так что моя логика или синтаксис или что-то выключен.

Еще раз спасибо за то, что посмотрели и помогли мне!

+0

Возможно, вам просто нужно обернуть свой оператор curl с помощью '$()' вместо двойных кавычек – rthbound

ответ

2

ifStatementConditional = "Grep 'google.com' /Users/USER12/Desktop/domainQueryString_output.txt | туалет -l"

Это задание строки. Вероятно, вы хотите получить обратные ссылки или конструкцию $(). В противном случае, $ ifStatementConditional никогда не будет равна 2

+0

спасибо. именно в чем моя проблема. благодаря! @CodeGnome – aLee788

1
if [ $ifStatementConditional -eq 2 ] ; 

Это расширяется как:

if [ grep 'google.com' /Users/USER12/Desktop/domainQueryString_output.txt | wc -l -eq 2 ] ; 

который объясняет свою ошибку.

Я думаю, что вы имели в виде, что:

#!/bin/bash 
curl "https://www.google.com/?gws_rd=ssl" > /Users/USER12/Desktop/domainQueryString_output.txt 
ifStatementConditional=$("grep 'google.com' /Users/USER12/Desktop/domainQueryString_output.txt | wc -l") 

    if [ $ifStatementConditional -eq 2 ] ; then 
     second_check="online" 
    else 
     second_check="DOMAIN IS OFFLINE" 
    fi 
echo $second_check 
  1. Нет необходимости делать printf "" > somefile.txt, когда вы делаете завиток после, и вы добавите к этому файлу
  2. $() является захват выхода подоболочки. Вот что здесь пропало.
+0

Благодарим вас за то, что вы указали избыточное заявление printf, которое у меня было там. Очень признателен! @Данные не найдены – aLee788