1unset a b
2#
3readonly a=A
4b=B
5readonly b
6# readonly on already readonly var is harmless:
7readonly b a
8readonly | grep '^readonly [ab]='
9# this should work:
10export a b
11export -n a b
12echo Ok:$?
13env | grep -e^a= -e^b=  # shows nothing
14
15echo
16# these should all fail (despite the same value being assigned)
17# bash does not abort even in non-interactive more (in script)
18# ash does, using subshell to continue
19true; (a=A)
20echo Fail:$?
21true; (readonly a=A)
22echo Fail:$?
23
24echo
25# in bash, assignment in export fails, but export succeeds! :)
26# we don't mimic that!
27true; (export a=Z)
28echo Fail:$?
29#env | grep '^a='
30#echo "^^^a is exported"
31export -n a  # undo that bashism, if it happens
32
33## ash: assignment errors in "a=Z CMD" lead to CMD not executed
34## echo
35## export b
36## # this fails to both set and export a:
37## a=Z env | echo grep '^[ab]='
38## echo "^^^a is not exported"
39## # but external command does get executed, and $? is not mangled (stays 42):
40## (exit 42); a=Z env echo Visible:$?
41
42echo
43# ash: this fails *silently*, bug? bash says "cannot unset: readonly variable"
44true; unset a
45echo Fail:$?
46