lambda()
{
# Save orignal function
local ORIGINAL=$(declare -f otl)
local SHIFT_SIZE=${1}
shift
local vars=()
for ((i=0;i<${SHIFT_SIZE};i++)); do
vars+=(${1})
shift
done
eval "otl() { $@; }"
otl ${vars[@]}
unset -f otl
eval "${ORIGINAL}"
}
lambda 3 ro sham bo 'echo $3 $2 $1'