Имам следния код в черупката.
Не работи. Така че не знам каква е моята грешка, питах се дали някой може да ми помогне
echo $i | awk -F "," "{if(NF == 1) print "Exiting..." system("exit")}"
така $i
е параметър например hi,hello
, И ако броят на полетата е равен на 1, бих искал програмата да излезе.
Отговори:
2 за отговор № 1Не можете да извикате изход през системата, защото awkсе изпълнява в отделен процес. Можете обаче да извикате изход от awk, с определен код за грешка и след това да излезете от скрипта в зависимост от кода за грешка. Пример:
awk -F "," "{if(NF==1){ print "Exiting"; exit -1}}" || exit
3 за отговор № 2
Awk не може да принуди родителския си процес да излезе, но можете да рефакторирате кода, така че извикващата обвивка да излезе.
В този ограничен контекст обаче изобщо нямате нужда от Awk.
case $i in
*,* ) ;; # nothing
* ) echo Exiting... >&2; exit 1;;
esac