...也就是说,有没有一种方法可以让我读取正在执行的命令?这是一个人为的例子,但我觉得它清楚地说明了这个问题:
function showOwnEvaluation {
local evaluatingCommand=????
[[ "$evaluatingCommand" =~ ^showOwnEvaluation ]] && echo "Original Function"
}
alias sOE='showOwnEvaluation'
$ showOwnEvaluation 123
# Output: Original Function
$ sOE 123
# Output:
echo "$(!-1)"
基本上就是为当前活动命令运行的能力?A echo "$(!0)"
,如果你愿意的话?
我在这里想要实现的目标是:如果我将扩展的结果分配给一个变量:
someVar=$(myFunc)
...我希望能够myFunc
根据所设置的变量名称更改响应。我根本不知道如何获取someVar=
表达式的一部分,如果确实可以这样做的话(当然,无需在终端上进行全面模拟并监控所有 I/O)。
我知道这听起来可能有点荒谬,但实际上我有一个有效的用例。我只是不确定它是否可行。
最接近您要求的功能可能是:
但这不是你想要的。你的方法的问题在于,所需信息必须跨 shell 边界传递:
someVar=$(myFunc)
在调用 shell 中是赋值,但myFunc
在子 shell 中执行。您可以让函数写入一个变量(这样不管怎样都更快...)而不是写入
stdout
并且必须用子shell捕获它: