(Pipeline (Com {[LIT_CHARS cat]} {[VarSub 1]} ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS line]} ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS echo]} {[VarSub line]} ) (Com {[LIT_CHARS awk]} {[SQ ]} ) (Com {[LIT_CHARS sh]} ) ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) )