Advertisement
Guest User

Lambdas bash extended

a guest
May 9th, 2014
523
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. lambda()
  2. {
  3.     # Save orignal function
  4.     local ORIGINAL=$(declare -f otl)
  5.     local SHIFT_SIZE=${1}
  6.     shift
  7.     local vars=()
  8.  
  9.     for ((i=0;i<${SHIFT_SIZE};i++)); do
  10.         vars+=(${1})
  11.         shift
  12.     done
  13.  
  14.     eval "otl() { $@; }"
  15.     otl ${vars[@]}
  16.     unset -f otl
  17.     eval "${ORIGINAL}"
  18. }
  19.  
  20.  
  21. accept_lambda()
  22. {
  23.     declare -a argAry1=("${!1}")
  24.     echo "${argAry1[@]}"
  25.     lambda ${argAry1[@]}
  26. }
  27.  
  28.  
  29. test_passing() {
  30.     echo "Test passing lambda"
  31.     local lamdef=(3 "test" "lambda" "pass" 'echo $3 $2 $1')
  32.     echo "Passing ${lamdef[@]}"
  33.     accept_lambda lamdef[@]
  34. }
  35.  
  36. returns_callback(){
  37.     lamdef=(3 test call back 'echo $3 $2 $1')
  38.     echo "${lamdef[@]}"
  39. }
  40.  
  41. test_callbacks(){
  42.     echo "Test callback"
  43.     local lamdef=($(returns_callback))
  44.     echo "Got callback: ${lamdef[@]}"
  45.     lambda ${lamdef[@]}
  46. }
  47.  
  48.  
  49. echo "Test lambda call"
  50. lambda 3 ro sham bo 'echo $3 $2 $1'
  51.  
  52.  
  53. test_passing
  54. test_callbacks
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement