Skocz do zawartości

Budowanie Polecenia W Skrypcie


Sanczo

Rekomendowane odpowiedzi

Chce zrobić następującą rzecz. W treści funkcji budować polecenie do wykonania (min. w pętli) dodając kolejne elementy do zmiennej typu string, następnie wywoływanej. Wynik wykonanego polecenia ma być przypisany zmiennej powiedzmy wynik.

 

W treści funkcji prawidłowo budowane jest polecenie, moge je bez problemu wykonać z poziomu shella. Jednak w treści skryptu dostaje komunikat, że nie moge go wykonać:

 

./starter.ksh[231]: showEmptyGroupsNames[292]: cut -d: -f1,3 /etc/group | grep ':22$\|:15$\|:101$\|:54321$\|:8$\|:9$\|:93$\|:20$\|:43$\|:21$' | awk 'BEGIN{FS=":"}; {print $1}': cannot execute

 

treść skryptu odpowiedzialna za to wygląda mniej więcej tak:

builded="cut -d: -f1,3 /etc/group | grep '"

<tu pętla tworząca polecenie>
do zmiennej builded dodawane są elementy zapytania przez operand +=
<koniec pętli>

wynik=$($builded) # wywołanie polecenia

 

Jak łatwo sprawdzić funkcja daje się bez problemu wykonać czy to pod Korn shell czy Bash. Need help badly bo już nie wiem jak to ugryzć a problem wydaje się szablonowy. Pod Bash spewnością rozwiązanie jest identyczne więc będe wdzieczny również za pomoc miłośników tego shella :)

 

pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem, czy dobrze zrozumiałem.

#!/bin/bash
builded="cut -d: -f1,3 /etc/group | grep "
builded="${builded} ':22$\|:15$\|:101$\|:54321$\|:8$\|:9$\|:93$\|:20$\|:43$\|:21$' | awk 'BEGIN{FS=\":\"}; {print $1}'"
wynik=$(eval $builded) 
echo $wynik

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem, czy dobrze zrozumiałem.

#!/bin/bash
      builded="cut -d: -f1,3 /etc/group | grep "
      builded="${builded} ':22$\|:15$\|:101$\|:54321$\|:8$\|:9$\|:93$\|:20$\|:43$\|:21  | awk 'BEGIN{FS=\":\"}; {print $1}'"
      wynik=$(eval $builded) 
      echo $wynik

Dokładnie to jest rozwiązanie, dzięki Iszk. :)

Poradziłem sobie z tym już wczoraj ale zapomniałem napisać.

Czyletność tego budowanego polecenia jeszcze można poprawić:

#!/bin/bash
      builded="cut -d: -f1,3 /etc/group | egrep "
      builded="${builded} ':22$|:15$|:101$|:54321$|:8$|:9$|:93$|:20$|:43$|:21  | awk -F: {print $1}'"
      wynik=$(eval $builded) 
      echo $wynik

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...