tests/source3.sub f
tests/source4.sub f
tests/source5.sub f
+tests/source6.sub f
tests/comsub.tests f
tests/comsub.right f
tests/cond.tests f
tests/cond.right f
+tests/cond-regexp.sub f
tests/cprint.tests f
tests/cprint.right f
tests/dbg-support.right f
\a alert (bell)
\b backspace
\c suppress trailing newline
- \E escape character
+ \e escape character
\f form feed
\n new line
\r carriage return
\\ backslash
\0nnn the character whose ASCII code is NNN (octal). NNN can be
0 to 3 octal digits
+ \xHH the eight-bit character whose value is HH (hexadecimal). HH
+ can be one or two hex digits
You can explicitly turn off the interpretation of the above characters
with the -E option.
./source5.sub: line 10: /tmp/source-notthere: No such file or directory
after bad source 1
./source5.sub: line 17: /tmp/source-notthere: No such file or directory
+one - OK
+0
+0
+two - OK
+0
+three - OK
+0
+four - OK
+0
AVAR
foo
foo
foo
declare -x foo=""
declare -x FOO="\$\$"
-./builtins.tests: line 207: declare: FOO: not found
+./builtins.tests: line 210: declare: FOO: not found
declare -x FOO="\$\$"
ok
ok
-./builtins.tests: line 239: kill: 4096: invalid signal specification
+./builtins.tests: line 242: kill: 4096: invalid signal specification
1
a\n\n\nb
a
b
-./builtins.tests: line 248: exit: status: numeric argument required
+./builtins.tests: line 251: exit: status: numeric argument required
# test behavior of `.' when given a non-existant file argument
${THIS_SH} ./source5.sub
+# test bugs in sourcing non-regular files, fixed post-bash-3.2
+${THIS_SH} ./source6.sub
+
# in posix mode, assignment statements preceding special builtins are
# reflected in the shell environment. `.' and `eval' need special-case
# code.
--- /dev/null
+VAR='[[:alpha:]]'
+
+[[ $VAR =~ '[[:alpha:]]' ]] && echo match 1
+
+[[ a =~ '[[:alpha:]]' ]] || echo match 2
+
+[[ a =~ [[:alpha:]] ]] && echo match 3
+
+[[ a =~ $VAR ]] && echo match 4
+
+[[ a =~ "$VAR" ]] || echo match 5
+
+line=aab
+[[ $line =~ [[:space:]]*(a)?b ]] && echo match 6
+
+V="alphabet"
+[[ $V == alphabet ]] && echo yes 1
+[[ $V == "alphabet" ]] && echo yes 2
+[[ $V == 'alphabet' ]] && echo yes 3
+[[ $V =~ alphabet ]] && echo yes 4
+[[ $V =~ "alphabet" ]] && echo yes 5
+[[ $V =~ 'alphabet' ]] && echo yes 6
+
+DOG="Dog name - 01 - Wiggles"
+REPAT='([[:alpha:][:blank:]]*)- ([[:digit:]]*) - (.*)$'
+if [[ $DOG =~ ([[:alpha:][:blank:]]*)-\ ([[:digit:]]*)\ -\ (.*)$ ]]
+then
+ echo Dog ${BASH_REMATCH[2]} is ${BASH_REMATCH[3]}
+fi
+if [[ $DOG =~ $REPAT ]]
+then
+ echo Dog ${BASH_REMATCH[2]} is ${BASH_REMATCH[3]}
+fi
+
+[[ $REPAT =~ "$REPAT" ]] && echo rematch 1
+
libc
ok 42
ok 43
+match 1
+match 2
+match 3
+match 4
+match 5
+match 6
+yes 1
+yes 2
+yes 3
+yes 4
+yes 5
+yes 6
+Dog 01 is Wiggles
+Dog 01 is Wiggles
+rematch 1
# bug in all versions up to and including bash-2.05b
if [[ "123abc" == *?(a)bc ]]; then echo ok 42; else echo bad 42; fi
if [[ "123abc" == *?(a)bc ]]; then echo ok 43; else echo bad 43; fi
+
+${THIS_SH} ./cond-regexp.sub
+echo "warning: some of these tests may fail if process substitution has not" >&2
+echo "warning: been compiled into the shell" >&2
+
${THIS_SH} ./builtins.tests > /tmp/xx 2>&1
diff /tmp/xx builtins.right && rm -f /tmp/xx
--- /dev/null
+# tests sourcing non-regular files, fixed post-3.2
+
+: ${TMPDIR:=/tmp}
+
+rm -f $TMPDIR/foo
+echo "echo one - OK" > $TMPDIR/foo
+. $TMPDIR/foo
+echo $?
+rm -f $TMPDIR/foo
+
+# non-regular readable file
+. /dev/null
+echo $?
+
+# FIFO or pipe via /dev/fd
+. <(echo "echo two - OK")
+echo $?
+
+# pipe
+echo "echo three - OK" | . /dev/stdin
+echo $?
+
+# FIFO
+mkfifo $TMPDIR/fifo-$$
+echo "echo four - OK" > $TMPDIR/fifo-$$ &
+sleep 1 # allow the child echo to execute
+. $TMPDIR/fifo-$$
+echo $?
+rm -f $TMPDIR/fifo-$$