1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
#!/bin/bash
# vim: set filetype=sh :
# file: example.ia-C-expr
# copyright: Bernd Schumacher <bernd.schumacher@hpe.com> (2007-2020)
# license: GNU General Public License, version 3
# description: example using check
# see also: test.ia-C-expr
set -e
set -u
. ./ia
sub()
{
eval "$ia_init"
# AC"DC
ia_ignore "^AC\"DC$" # [ "^AC\"DC$" = '^AC"DC$' ]
ia_add "echo \"AC\\\"DC\" >&2" # [ "$(eval "echo \"AC\\\"DC\"")" = 'AC"DC' ]
# dc="" AC$dc
ia_add "dc=\"\""
ia_ignore "^AC$"
ia_add "echo \"AC\$dc\" >&2"
# dc="DC" AC$dc
ia_add "dc=\"DC\""
ia_add ":"
ia_ignore "^ACDC$"
ia_add "echo \"AC\$dc\" >&2"
# ACDC$
ia_ignore "^ACDC\\\$$"
ia_add "echo \"ACDC$\" >&2"
ia_ignore "^ACDC\\\$$"
ia_add "cat <<'END' >&2
ACDC$
END
"
ia_ignore "^ACDC\\\$$"
ia_add "echo \"ACDC$\" >&2"
# AC\DC
ia_ignore '^AC\\DC$'
ia_add "echo \"AC\\\\DC\" >&2" # [ "AC\\\\DC" = 'AC\\DC' ]
ia_ignore '^AC\\DC$'
ia_add "echo \"AC\\DC\" >&2" # [ "AC\\DC" = 'AC\DC' ]
ia_ignore '^AC\\DC$'
ia_add "cat <<'END' >&2
AC\\DC
END
"
ia_ignore '^AC\\DC$'
ia_add "echo 'AC\\DC' >&2"
ia_ignore "^one$"
ia_ignore "^(two|three)$"
ia_add "echo one >&2; echo two >&2; echo three >&2"
ia_ignore ".*"
ia_add "echo one >&2"
ia_ignore ".*"
ia_add "echo two >&2"
# number of backslashes 1, 3, 7, 15, 31, 63 ...
ia_ignore "^one$"
ia_add "eval \"echo \\\"one\\\"\" >&2"
ia_ignore "^two$"
ia_add "eval \"eval \\\"echo \\\\\\\"two\\\\\\\"\\\"\" >&2"
ia_ignore "^three$"
ia_add "eval \"eval \\\"eval \\\\\\\"echo \\\\\\\\\\\\\\\"three\\\\\\\\\\\\\\\"\\\\\\\"\\\"\" >&2"
ia_ignore "^four$"
ia_add "eval \"eval \\\"eval \\\\\\\"eval \\\\\\\\\\\\\\\"echo \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"four\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\"\\\"\" >&2"
ia -C
}
eval "$ia_init"
ia_add "sub <-i>" # call sub with "ia -C" from main with "ia"
ia
|