Como posso passar um bloco como argumento para uma função bash?

Oct 04 2020

Eu gostaria de criar uma função bash que pode obter um bloco de código bash como time:

time {
  echo 123
  echo "Something else"
  sleep 1
}

Basicamente, gostaria de poder embrulhar o bloco com meu código bash.

Edit : Atualizei minha pergunta após a primeira resposta de @ DavidPostill ♦ e os comentários: Por exemplo, eu gostaria de quebrar um bloco de código com 2> & 1> / dev / null e também o tempo com time. Devo escrever um programa fora do bash para fazer isso?

function myfunction() {
  time { $1 } 2>&1 /dev/null
}
myfunction { sleep 1 }

Edição 2 : Após a leitura, parece que não é possível, pois timeé um caso especial para o bash.

Respostas

DavidPostill Oct 04 2020 at 19:57

Eu gostaria de poder envolver a função com meu código bash e passar argumentos

Funções com amostra de parâmetros

#!/bin/bash 
function quit {
   exit
}  
function e {
    echo $1 
}  
e Hello
e World
quit
echo foo 

A função eimprime o primeiro argumento que recebe.

Os argumentos, dentro das funções, são tratados da mesma maneira que os argumentos dados ao script.

Programação Source BASH - Introdução COMO: Funções


Leitura adicional

  • function Man Page - Linux - SS64.com
  • Uma função bash que aceita argumentos como outras linguagens? - Unix e Linux Stack Exchange
  • Passando parâmetros para uma função Bash - Stack Overflow