Bash 模拟系统后脚本执行缓慢”;日期“;命令

Bash 模拟系统后脚本执行缓慢”;日期“;命令,bash,Bash,各位堆栈用户: 我正在使用函数“setup_date”更改自定义执行的日期命令。这是为了模拟和测试一些bash脚本,它们的执行必须始终使用相同的日期来比较结果 因此,这种方法在ssh或sftp命令模拟中非常有效。但这一次,就在“date”命令替换之后,脚本的执行变得非常缓慢!原因是什么?linux系统是否经常调用“date”命令以供内部使用 问候, # #用以前定义的模拟命令替换命令 # mock_cmd(){ 本地命令=“${1:-}” 本地覆盖=“${2:-}” #如果已经设置了目标函数,则

各位堆栈用户:

我正在使用函数“setup_date”更改自定义执行的日期命令。这是为了模拟和测试一些bash脚本,它们的执行必须始终使用相同的日期来比较结果

因此,这种方法在ssh或sftp命令模拟中非常有效。但这一次,就在“date”命令替换之后,脚本的执行变得非常缓慢!原因是什么?linux系统是否经常调用“date”命令以供内部使用

问候,

#
#用以前定义的模拟命令替换命令
#
mock_cmd(){
本地命令=“${1:-}”
本地覆盖=“${2:-}”
#如果已经设置了目标函数,则删除该函数
取消设置${command}
#创建名为“${command}”的包装函数
eval“${command}(){${override}\${@};}”
}
#模拟日期命令
#1-日期格式
#必须有一个变量:dateFile!
日期(模拟){
日期“${1}”-r${dateFile}
}
#
#1-日期ex:201203101513
#2-日期文件路径
安装日期(){
touch-t“${1}”${2}/dateFile
导出日期文件=${2}/dateFile
}
执行:
模拟命令“日期”模拟命令“日期”
设置日期“201203101513”${pwd}/in
日期=$(日期+%y%j)
echo$日期
日期=$(日期+%y%j)
echo$日期
出口1

mock_cmd
非常脆弱,比您需要的更复杂。您已经在定义函数
date\u mock\u SP
;只需将其命名为
date
,该函数将覆盖该命令。在函数内部,使用
命令日期
避免无限递归

date () { command date "$1" -r "$dateFile"; }

setup_date "201203101513" "$pwd/in"  # uses the function, not the executable, date

unset -f date