...ou seja, há um meio pelo qual eu possa ler o comando completo que está sendo avaliado À MEDIDA que está acontecendo? Aqui está um exemplo artificial, mas que eu sinto que deixa a questão clara:
function showOwnEvaluation {
local evaluatingCommand=????
[[ "$evaluatingCommand" =~ ^showOwnEvaluation ]] && echo "Original Function"
}
alias sOE='showOwnEvaluation'
$ showOwnEvaluation 123
# Output: Original Function
$ sOE 123
# Output:
Basicamente a habilidade de correr echo "$(!-1)"
para o comando atual, ativo? Um echo "$(!0)"
, se preferir?
O que eu gostaria de fazer aqui é isto: se eu estiver atribuindo o resultado de uma expansão a uma variável:
someVar=$(myFunc)
...Eu gostaria de poder alterar a resposta com myFunc
base no nome da variável para a qual ela está sendo definida . Eu simplesmente não consigo descobrir como obter a someVar=
parte da expressão, se é que é possível FAZER tal coisa (sem aplicar uma emulação completa no terminal e monitorar todas as E/S, é claro).
Sei que isso pode parecer um desejo sem sentido, aqui, mas eu realmente tenho um caso de uso válido. Só não tenho certeza se é mesmo viável.
O recurso mais próximo do que você pediu é provavelmente este:
Mas não é isso que você quer. O problema com sua abordagem é que a informação necessária tem que ser passada através de um limite de shell:
someVar=$(myFunc)
é uma atribuição no shell de chamada, masmyFunc
é executada em um subshell.Você pode fazer a função escrever em uma variável (o que é mais rápido de qualquer maneira...) em vez de escrever
stdout
e ter que capturar isso com um subshell: