Skrypt bashowy nie może otworzyć pliku przy wykorzystaniu less

0

Witam ma dziwny problem nie mogę za pomocą skryktu baashowego otworzyć pliku (less) i go grep. Dostaje taki komunikat: No such file or directory. Plik jest na sto procent i normalnie wszystko działa ale nie w skrypcie.

searchPathLogsInTGF() {
	local sidePath="$(tgr $jobID | grep "Screen log (file)")"
	local nameScreenlog=""
	sidePath=${sidePath#*) }
	less $sidePath | grep "coreParameters"
	CURRENT_LOG_DIR="$(less $sidePath | grep "coreParameters")"
	echo $CURRENT_LOG_DIR
}
2

Tylko po co Ci ten less w tym przykładzie? less (będący następcą more, because less is more) ma za zadanie być pagerem, tzn. ma wyświetlić część tekstu z możliwością przewijania, by można było ten tekst przeczytać, więc w tym przypadku jest totalnie zbyteczny. Już bardziej pasowało by cat, ale byłby to przykład na UUoC (Useless Use of Cat) jako, że grep przyjmuje jako argument plik, w którym ma szukać (dzięki temu ma możliwość by użyć parę dodatkowych optymalizacji).

Dodatkowo twój skrypt ma pewną wadę, jeśli s$idePath zawiera spacje to efekt będzie zgoła inny niż oczekujesz, więc powinno to wyglądać tak:

searchPathLogsInTGF() {
    local sidePath="$(tgr "$jobID" | grep "Screen log (file)")"

    CURRENT_LOG_DIR=$(grep "coreParameters" "${sidePath#*)")

    echo "$CURRENT_LOG_DIR"
}

Chociaż zapewne można to zrobić jeszcze inaczej gdybyś podał przykładowy output tgr "$jobID" (a przynajmniej linię, którą próbujesz dopasować).

0

ok już chyba wiem co jest przyczyną utworzyłem sobie nowy plik i przekierowałem zmienną okazało się ze mam coś takiego .../<nazwa_pliku>\033[0m z tego co wiem to to jest coś z kolaroami ale nie mogę się tego pozbyć czy ktoś z was ma może jakieś rozwiązanie próbowałem kilku miedzy innymi tail oraz sed ale nie działa

OK już sobie poradziłem rozwiązanie to dodanie po grep sed "s,\x1B[[0-9;]*[a-zA-Z],,g"

0

W takim przypadku to wymaga by w tym programie tgr albo dodać flagę wyłączającą kolory, a jeszcze lepiej by ten program sam wykrywał czy output idzie do terminala (isatty(1)) i wtedy automatycznie tą flagę ustawiać/wyłączać w zależności od wyniku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1