Функция string.Contains не работает должным образом в моем коде golang. Хотя первая строка содержит вторую строку, условие не выполняется - PullRequest
0 голосов
/ 10 января 2020

Я проверяю вывод некоторых команд оболочки в golang. Мне нужно проверить, содержит ли вывод мою входную строку.

//myinput is a valid string
 stdoutput2,stderr2,err2 := Shellout("some valid shell command | grep "+myinput)
        if(err2!=nil){
        glg.Error("Not able to retrive information from system")
        glg.Error(err2)
        return false
        } else if strings.Contains(strings.TrimSpace(stdoutput2),myinput){
        glg.Info("able to retrive information from system")
        return true
      } else {
                glg.Error("Not able to retrive information from system")
                glg.Error("stdoutput2 after trimming is-->"+strings.TrimSpace(stdoutput2))
                glg.Error("myinput is :"+myinput)
                glg.Error("std error is :"+stderr2)
                return false
        } 

Здесь, хотя stdoutput2 содержит значение myinput, условие my else если не выполняется.

Окончательный вывод

Невозможно получить информацию из системы. stdoutput2 после обрезки - -> Name = customcsi-b35f3ea733 myinput: customcsi-b35f3ea733


Обратите внимание на пробел между именем и символом =. Это часть вывода.

Пожалуйста, помогите в решении этой проблемы. Моя golang версия 1.13.5

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 10 января 2020

У вас есть новая строка в конце myinput?

Вы можете попробовать

stdoutput2, stderr2, err2 := Shellout("some valid shell command | grep " + myinput)    
myinput = strings.TrimSpace(myinput)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...