| #!/bin/bash |
| # VIM_TEST_SETUP highlight link shArrayValue Identifier |
| # VIM_TEST_SETUP highlight link shBracketExprDelim Structure |
| # VIM_TEST_SETUP highlight link shCharClass Todo |
| # VIM_TEST_SETUP highlight link shRange CursorLine |
| |
| |
| |
| |
| [[ ( "$1" == ?(-)+([0-9]) && "$1" =~ ^-?[[:digit:]]+$ && |
| '^?(-)+([[:digit:]])$' == "$2" && ! "^-?[0-9]+$" =~ "$2" ) ]] || : |
| |
| [ \( "$1" != "?(-)+([0-9])" -a "$1" != '?(-)+([[:digit:]])' \) ] && |
| [ \( "?(-)+([[:digit:]])" != "$2" -a '?(-)+([0-9])' != "$2" \) ] || : |
| |
| # Match "\[0\]\[0\]", "{0}{0}", etc. |
| : [[{][0-9]*[]}][[{][[:digit:]]*[]}] |
| : [\ |
| [{][0-9]*[]}][[{][[:digit:]]*[]}] |
| : [[\ |
| {][0-9]*[]}][[{][[:digit:]]*[]}] |
| : [[{\ |
| ][0-9]*[]}][[{][[:digit:]]*[]}] |
| : [[{]\ |
| [0-9]*[]}][[{][[:digit:]]*[]}] |
| : [[{][\ |
| 0-9]*[]}][[{][[:digit:]]*[]}] |
| : [[{][0-9\ |
| ]*[]}][[{][[:digit:]]*[]}] |
| : [[{][0-9]\ |
| *[]}][[{][[:digit:]]*[]}] |
| : [[{][0-9]*\ |
| []}][[{][[:digit:]]*[]}] |
| : [[{][0-9]*[]\ |
| }][[{][[:digit:]]*[]}] |
| : [[{][0-9]*[]}\ |
| ][[{][[:digit:]]*[]}] |
| : [[{][0-9]*[]}]\ |
| [[{][[:digit:]]*[]}] |
| : [[{][0-9]*[]}][\ |
| [{][[:digit:]]*[]}] |
| : [[{][0-9]*[]}][[\ |
| {][[:digit:]]*[]}] |
| : [[{][0-9]*[]}][[{\ |
| ][[:digit:]]*[]}] |
| : [[{][0-9]*[]}][[{]\ |
| [[:digit:]]*[]}] |
| : [[{][0-9]*[]}][[{][\ |
| [:digit:]]*[]}] |
| : [[{][0-9]*[]}][[{][[:digit:]\ |
| ]*[]}] |
| : [[{][0-9]*[]}][[{][[:digit:]]\ |
| *[]}] |
| : [[{][0-9]*[]}][[{][[:digit:]]*\ |
| []}] |
| : [[{][0-9]*[]}][[{][[:digit:]]*[]\ |
| }] |
| : [[{][0-9]*[]}][[{][[:digit:]]*[]}\ |
| ] |
| : [[{][0-9]*[]}][[{][[:digit:]]*[[.].]}] |
| : [[{][0-9]*[]}][[{][[:digit:]]*[\ |
| [.].]}] |
| : [[{][0-9]*[]}][[{][[:digit:]]*[[.].]\ |
| }] |
| : [[{][0-9]*[]}][[{][[:digit:]]*[[.].]}\ |
| ] |
| |
| # Match "\[0\]\[0\]", "{0}{0}", etc. |
| case "$1" in |
| [[{][0-9]*[]}][[{][[:digit:]]*[]}]*) : [0-9]; : [!0-9]; : [^0-9];; |
| [\ |
| [{][0-9]*[]}][[{][[:digit:]]*[]}]*) : [0123]; : [!0123]; : [^0123];; |
| [[\ |
| {][0-9]*[]}][[{][[:digit:]]*[]}]*) : [1[.0.]]; : [![.0.]]; : [^[.0.]^];; |
| [[{\ |
| ][0-9]*[]}][[{][[:digit:]]*[]}]*) : [1[=0=]]; : [![=0=]!]; : [^[=0=]];; |
| [[{]\ |
| [0-9]*[]}][[{][[:digit:]]*[]}]*) ;; |
| [[{][\ |
| 0-9]*[]}][[{][[:digit:]]*[]}]*) ;; |
| [[{][0-9\ |
| ]*[]}][[{][[:digit:]]*[]}]*) : ?[[:foo:]]?; : [![:foo:]]?; : ?[^[:foo:]];; |
| [[{][0-9]\ |
| *[]}][[{][[:digit:]]*[]}]*) : [[:digit:]]; : [![:digit:]]; : [^[:digit:]];; |
| [[{][0-9]*\ |
| []}][[{][[:digit:]]*[]}]*) : "${1^[[:lower:]]}"; : "${1^^[a-z]}";; |
| [[{][0-9]*[]\ |
| }][[{][[:digit:]]*[]}]*) : "${1,[[:upper:]]}"; : "${1,,[A-Z]}";; |
| [[{][0-9]*[]}\ |
| ][[{][[:digit:]]*[]}]*) ;; |
| [[{][0-9]*[]}]\ |
| [[{][[:digit:]]*[]}]*) ;; |
| [[{][0-9]*[]}][\ |
| [{][[:digit:]]*[]}]*) : "${1#[[:digit:]]}"; : "${1##[0-9]}";; |
| [[{][0-9]*[]}][[\ |
| {][[:digit:]]*[]}]*) : "${1%[[:digit:]]}"; : "${1%%[0-9]}";; |
| [[{][0-9]*[]}][[{\ |
| ][[:digit:]]*[]}]*) : "${1/[][:digit:][]/[0-9]}"; : "${1//[]0-9[]/[0-9]}";; |
| [[{][0-9]*[]}][[{]\ |
| [[:digit:]]*[]}]*) : "${1/#[][:digit:][]/[0-9]}"; : "${1/%[]0-9[]/[0-9]}";; |
| [[{][0-9]*[]}][[{][\ |
| [:digit:]]*[]}]*) ;; |
| [[{][0-9]*[]}][[{][[:digit:]\ |
| ]*[]}]*) ;; |
| [[{][0-9]*[]}][[{][[:digit:]]\ |
| *[]}]*) : "${1#*[[.[.][.].]]}"; : "${1%[[.].][.[.]]*}"; : "${1#*" "[][]}";; |
| [[{][0-9]*[]}][[{][[:digit:]]*\ |
| []}]*) : "${1#*[[=[=][=]=]]}"; : "${1%[[=]=][=[=]]*}"; : "${1#*\ [!][]}";; |
| [[{][0-9]*[]}][[{][[:digit:]]*[]\ |
| }]*) : "${1#*[!]]}"; : "${1#*[^]]}"; : "${1%[![]*}"; : "${1%[^[]*}";; |
| [[{][0-9]*[]}][[{][[:digit:]]*[]}\ |
| ]*) : "${1#*[!\]]}"; : "${1#*[^\]]}"; : "${1%[!\[]*}"; : "${1%[^\[]*}";; |
| [[{][0-9]*[]}][[{][[:digit:]]*[]}]\ |
| *) ;; |
| [[{][0-9]*[]}][[{][[:digit:]]*[[.].]}]\ |
| *) ;; |
| [[{][0-9]*[]}][[{][[:digit:]]*[\ |
| [.].]}]*) ;; |
| [[{][0-9]*[]}][[{][[:digit:]]*[[.].]\ |
| }]*) ;; |
| [[{][0-9]*[]}][[{][[:digit:]]*[[.].]}\ |
| ]*) ;; |
| [!][:digit:][:xdigit:]\ [^[:lower:]![:upper:]]*) ;; |
| [^][:digit:]0-9a-fA-F\ [![:lower:]^[:upper:]]*) ;; |
| [!!] | [!![] | [!]!] | [!^] | [!^[] | [!]^]) ;; |
| [^!] | [^![] | [^]!] | [^^] | [^^[] | [^]^]) ;; |
| esac |
| |
| # Match "\[0\]\[0\]", "{0}{0}", etc. |
| : "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[]}]}" |
| : "${1#*\ |
| [[{][0-9]*[]}][[{][[:digit:]]*[]}]}" |
| : "${1#*[\ |
| [{][0-9]*[]}][[{][[:digit:]]*[]}]}" |
| : "${1#*[[\ |
| {][0-9]*[]}][[{][[:digit:]]*[]}]}" |
| : "${1#*[[{\ |
| ][0-9]*[]}][[{][[:digit:]]*[]}]}" |
| : "${1#*[[{]\ |
| [0-9]*[]}][[{][[:digit:]]*[]}]}" |
| : "${1#*[[{][\ |
| 0-9]*[]}][[{][[:digit:]]*[]}]}" |
| : "${1#*[[{][0-9\ |
| ]*[]}][[{][[:digit:]]*[]}]}" |
| : "${1#*[[{][0-9]\ |
| *[]}][[{][[:digit:]]*[]}]}" |
| : "${1#*[[{][0-9]*\ |
| []}][[{][[:digit:]]*[]}]}" |
| : "${1#*[[{][0-9]*[]\ |
| }][[{][[:digit:]]*[]}]}" |
| : "${1#*[[{][0-9]*[]}\ |
| ][[{][[:digit:]]*[]}]}" |
| : "${1#*[[{][0-9]*[]}]\ |
| [[{][[:digit:]]*[]}]}" |
| : "${1#*[[{][0-9]*[]}][\ |
| [{][[:digit:]]*[]}]}" |
| : "${1#*[[{][0-9]*[]}][[\ |
| {][[:digit:]]*[]}]}" |
| : "${1#*[[{][0-9]*[]}][[{\ |
| ][[:digit:]]*[]}]}" |
| : "${1#*[[{][0-9]*[]}][[{]\ |
| [[:digit:]]*[]}]}" |
| : "${1#*[[{][0-9]*[]}][[{][\ |
| [:digit:]]*[]}]}" |
| : "${1#*[[{][0-9]*[]}][[{][[:digit:]\ |
| ]*[]}]}" |
| : "${1#*[[{][0-9]*[]}][[{][[:digit:]]\ |
| *[]}]}" |
| : "${1#*[[{][0-9]*[]}][[{][[:digit:]]*\ |
| []}]}" |
| : "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[]\ |
| }]}" |
| : "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[]}\ |
| ]}" |
| : "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[]}]\ |
| }" |
| : "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[[.].]}]}" |
| : "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[\ |
| [.].]}]}" |
| : "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[[.].]\ |
| }]}" |
| : "${1#*[[{][0-9]*[]}][[{][[:digit:]]*[[.].]}]\ |
| }" |
| |
| : *[x[=[=][=]=]]; : [x[=]=][=[=]]*; : *[x[.[.][.].]]; : [x[.].][.[.]]* |
| : *[[=[=]x[=]=]]; : [[=]=]x[=[=]]*; : *[[.[.]x[.].]]; : [[.].]x[.[.]]* |
| : *[[=[=][=]=]x]; : [[=]=][=[=]x]*; : *[[.[.][.].]x]; : [[.].][.[.]x]* |
| : [!]]; : [^]]; : [![]; : [^[]; : [!\]]; : [^\]]; : [!\[]; : [^\[] |
| : [$'\x5b']; : [$'\x5d']; : []]; : [[]; : [\]]; : [\[] |
| : [$'\x20'[]; : [" "[]; : [' '[]; : [\ []; : [\ \[]; : "${1#[ ]}" |
| : [[$'\x20']; : [[" "]; : [[' ']; : [[\ ]; : [\[\ ]; : "${1#[ ]}" |
| : [^$'\x20'[]; : [!" "[]; : [^' '[]; : [!\ []; : "${1#[^ ]}" |
| : [![$'\x20']; : [^[" "]; : [![' ']; : [^[\ ]; : "${1#[! ]}" |
| |
| nl=' |
| ' |
| echo "${1#${1%%[!"${nl}"]*}}"; echo "${1#${1%%[!'${nl}']*}}" |
| echo "${1#${1%%[!\"${nl}]*}}"; echo "${1#${1%%[!\'${nl}]*}}" |
| echo "${1#${1%%[!${nl}\"]*}}"; echo "${1#${1%%[!${nl}\']*}}" |
| |
| bins=(); bins=(0 1); eval bins+=({0..1}) |
| bins[0]=0; bins[1]=1; eval bins+=(\${bins[{1..0}]}); unset bins[3] bins[2] |
| bins=([8#0]=$((2#100)) [$((8#1))]=$((2#10)) [3]=${bins[2#1]} ${bins[0]}) |
| (echo sum[$((bins[16#3] + bins[8#2] + bins[2#1] + bins[0]))]) |
| eval unset bins[{0..$((${#bins[*]} - 1))}] |
| : |