(List (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS nounset]}) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS errexit]}) (FunctionDef ReadKey [] (Com {[LIT_CHARS read]}) ) (FunctionDef Banner [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "######################################################################"]]}) (Com {[LIT_CHARS echo]} {[VarSub *]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "######################################################################"]]}) ) ) (FunctionDef Download [] (List (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "downloading "][VarSub 1]]}) (If (Com {[LIT_CHARS which]} {[LIT_CHARS wget]}) (Com {[LIT_CHARS wget]} {[VarSub 1]} {[LIT_CHARS -O]} {[VarSub 2]}) (Com {[LIT_CHARS which]} {[LIT_CHARS curl]}) (Com {[LIT_CHARS curl]} {[LIT_CHARS --url]} {[VarSub 1]} {[LIT_CHARS -o]} {[VarSub 2]}) (ElseTrue) (List (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Problem encountered"]]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Please install curl or wget and rerun this script"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "or manually download "][VarSub 1][LIT_CHARS " to "][VarSub 2]]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "press any key when done"]]}) (Com {[LIT_CHARS ReadKey]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -s]} {[VarSub 2]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: could not find "][VarSub 2]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) ) ) (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_CHARS -ne]} {[LIT_CHARS 2]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "usage: download.sh "]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) (Com {[LIT_CHARS Download]} {[VarSub 1]} {[VarSub 2]}) )