mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-06-21 21:07:57 +02:00
263 lines
3.2 KiB
Plaintext
263 lines
3.2 KiB
Plaintext
a returns 5
|
|
b returns 4
|
|
c returns 3
|
|
d returns 2
|
|
in e
|
|
e returned 25
|
|
x is 25
|
|
ZZ
|
|
abcde
|
|
defghi
|
|
ZZ
|
|
5
|
|
0
|
|
AVAR
|
|
AVAR
|
|
foo
|
|
foo
|
|
AVAR
|
|
5
|
|
5
|
|
f1
|
|
f1 ()
|
|
{
|
|
( return 5 );
|
|
status=$?;
|
|
echo $status;
|
|
return $status
|
|
}
|
|
before: try to assign to FUNCNAME
|
|
outside: FUNCNAME =
|
|
before: FUNCNAME = func
|
|
FUNCNAME = func2
|
|
after: FUNCNAME = func
|
|
outside2: FUNCNAME =
|
|
function
|
|
zf is a function
|
|
zf ()
|
|
{
|
|
echo this is zf
|
|
}
|
|
f is a function
|
|
f ()
|
|
{
|
|
echo f-x;
|
|
echo f-y
|
|
} 1>&2
|
|
subshell
|
|
f is a function
|
|
f ()
|
|
{
|
|
echo f-x;
|
|
echo f-y
|
|
} 1>&2
|
|
f2 is a function
|
|
f2 ()
|
|
{
|
|
echo f2-a;
|
|
function f3 ()
|
|
{
|
|
echo f3-a;
|
|
echo f3-b
|
|
} 1>&2;
|
|
f3
|
|
}
|
|
subshell
|
|
f2 is a function
|
|
f2 ()
|
|
{
|
|
echo f2-a;
|
|
function f3 ()
|
|
{
|
|
echo f3-a;
|
|
echo f3-b
|
|
} 1>&2;
|
|
f3
|
|
}
|
|
f4 is a function
|
|
f4 ()
|
|
{
|
|
echo f4-a;
|
|
function f5 ()
|
|
{
|
|
echo f5-a;
|
|
echo f5-b
|
|
} 1>&2;
|
|
f5
|
|
} 2>&1
|
|
subshell
|
|
f4 is a function
|
|
f4 ()
|
|
{
|
|
echo f4-a;
|
|
function f5 ()
|
|
{
|
|
echo f5-a;
|
|
echo f5-b
|
|
} 1>&2;
|
|
f5
|
|
} 2>&1
|
|
testgrp is a function
|
|
testgrp ()
|
|
{
|
|
echo testgrp-a;
|
|
{
|
|
echo tg-x;
|
|
echo tg-y
|
|
} 1>&2;
|
|
echo testgrp-b
|
|
}
|
|
subshell
|
|
testgrp is a function
|
|
testgrp ()
|
|
{
|
|
echo testgrp-a;
|
|
{
|
|
echo tg-x;
|
|
echo tg-y
|
|
} 1>&2;
|
|
echo testgrp-b
|
|
}
|
|
funca is a function
|
|
funca ()
|
|
{
|
|
( echo func-a )
|
|
}
|
|
funcb is a function
|
|
funcb ()
|
|
{
|
|
( echo func-b )
|
|
}
|
|
funcc is a function
|
|
funcc ()
|
|
{
|
|
( echo func-c ) 2>&1
|
|
}
|
|
func-a
|
|
func-b
|
|
func-c
|
|
foo-bar
|
|
foo-bar ()
|
|
{
|
|
:
|
|
}
|
|
expect 5 10
|
|
5 10
|
|
expect 20
|
|
20
|
|
expect 5 20
|
|
5 20
|
|
expect 5 20
|
|
5 20
|
|
expect 2 40
|
|
2 40
|
|
expect 5 20
|
|
5 20
|
|
./func4.sub: line 23: foo: maximum function nesting level exceeded (100)
|
|
1
|
|
after: f = 100
|
|
./func4.sub: line 23: foo: maximum function nesting level exceeded (100)
|
|
1
|
|
after: f = 100
|
|
7
|
|
after FUNCNEST reset: f = 201
|
|
7
|
|
after FUNCNEST unset: f = 201
|
|
./func4.sub: line 23: foo: maximum function nesting level exceeded (20)
|
|
1
|
|
after FUNCNEST assign: f = 38
|
|
./func5.sub: line 31: `sys$read': not a valid identifier
|
|
11111 ()
|
|
{
|
|
printf "FUNCNAME: %s\n" $FUNCNAME
|
|
}
|
|
function a=2 ()
|
|
{
|
|
printf "FUNCNAME: %s\n" $FUNCNAME
|
|
}
|
|
11111 ()
|
|
{
|
|
printf "FUNCNAME: %s\n" $FUNCNAME
|
|
}
|
|
function a=2 ()
|
|
{
|
|
printf "FUNCNAME: %s\n" $FUNCNAME
|
|
}
|
|
FUNCNAME: a=2
|
|
<(:)
|
|
<(:) is a function
|
|
<(:) ()
|
|
{
|
|
echo $FUNCNAME
|
|
}
|
|
posix mode:
|
|
type
|
|
break is a special shell builtin
|
|
builtin
|
|
command -v
|
|
break
|
|
command -V
|
|
break is a special shell builtin
|
|
type -a
|
|
break is a special shell builtin
|
|
break is a function
|
|
break ()
|
|
{
|
|
echo inside function $FUNCNAME
|
|
}
|
|
declare
|
|
break ()
|
|
{
|
|
echo inside function $FUNCNAME
|
|
}
|
|
execution
|
|
default mode:
|
|
type
|
|
break is a function
|
|
break ()
|
|
{
|
|
echo inside function $FUNCNAME
|
|
}
|
|
function
|
|
command -v
|
|
break
|
|
command -V
|
|
break is a function
|
|
break ()
|
|
{
|
|
echo inside function $FUNCNAME
|
|
}
|
|
type -a
|
|
break is a function
|
|
break ()
|
|
{
|
|
echo inside function $FUNCNAME
|
|
}
|
|
break is a shell builtin
|
|
declare
|
|
break ()
|
|
{
|
|
echo inside function $FUNCNAME
|
|
}
|
|
execution
|
|
inside function break
|
|
./func5.sub: line 86: `break': is a special builtin
|
|
!! is a function
|
|
!! ()
|
|
{
|
|
fc -s "$@"
|
|
}
|
|
!! is a function
|
|
!! ()
|
|
{
|
|
fc -s "$@"
|
|
}
|
|
5
|
|
rfunc ()
|
|
{
|
|
local -;
|
|
local var;
|
|
local -p
|
|
}
|
|
declare -fr rfunc
|