/ / Używanie polecenia powłoki w awk nie działa - shell, awk

Używanie polecenia powłoki w awk nie działa - shell, awk

Mam następujący kod w powłoce.

To nie działa. Więc nie wiem, jaki jest mój błąd. Zastanawiałem się, czy ktoś może mi pomóc

echo $i | awk -F "," "{if(NF == 1) print "Exiting..." system("exit")}"

więc $i jest parametrem na przykład hi,hello. A jeśli liczba pól jest równa 1, chciałbym, aby program zakończył działanie.

Odpowiedzi:

2 dla odpowiedzi № 1

Nie możesz wywołać wyjścia przez system, ponieważ awkjest wykonywany w osobnym procesie. Można jednak wywołać exit z awk z określonym kodem błędu, a następnie zamknąć skrypt w zależności od kodu błędu. Przykład:

awk -F "," "{if(NF==1){ print "Exiting"; exit -1}}" || exit

3 dla odpowiedzi № 2

Awk nie może wymusić zakończenia procesu nadrzędnego, ale można zmienić kod tak, aby powłoka wywołująca zakończyła działanie.

W tym ograniczonym kontekście wcale nie potrzebujesz Awk.

case $i in
*,* ) ;; # nothing
* ) echo Exiting... >&2; exit 1;;
esac