# Second-pass expression fixups. # Copyright (c) 1992-2012 by Hamilton Laboratories. All rights reserved. # Optimize expressions (for performance, not functionality) by # removing superfluous quoting and curly braces: # 1. Inside ( ... ) expressions: # "${foo}" --> foo # "$foo" --> foo # "123" --> 123 # 2. In @ (assignment statements): # ${foo} --> foo # $foo --> foo # 3. Fixup earlier fixups that were looking for the end of a wordlist: # A[0] != "" --> A != "" # 4. Fixup any assignments not already rewritten: # foo=... --> set foo=... /^[^#]* (.*)/{ s/"\${\([^}]*\)}"/\1/g s/"\$\([^"]*\)"/\1/g s/"\([1-9][0-9]*\)"/\1/g s/"0"/0/g } /^[^#]*@ /{ s/\${\([^}]*\)}/\1/g s/\$\([a-zA-Z0-9_]*\)/\1/g } s/\[0\] != ""/ != ""/ /^[ ]*PATH=[^"]/{ s/:/;/g s/=\(.*\)/="\1"/ } /^[ ]*[a-zA-Z][a-zA-Z0-9_]*[ ]*=/s/[a-zA-Z]/set &/ |