我正在使用一组脚本,其函数被视为只读。这些函数不仅仅是一个命令列表,例如,可以有循环和更改目录,甚至可以调用其他函数:
func() {
cd folder/
run command1
mkdir folder2/ ; cd folder2/
run command2
}
有一会儿,假装我可以更改脚本,向您展示我想要的内容,可能看起来像这样:
func() {
cd folder/
string[0]="command1" ; run command1 |& tee out0.log ; result[0]="$?" ; finished_command_number 0
mkdir folder2/ ; cd folder2/
string[1]="command2" ; run command2 |& tee out1.log ; result[1]="$?" ; finished_command_number 1
}
因此,对于可以通过管道传输但不能用于cd
循环的命令,我想存储一个字符串,存储标准输出(stderr),存储退出代码,然后运行另一个命令。但是,我无法添加它,它必须在我的脚本中完成,该脚本使用 func() 调用脚本。
为了仅获得 post 命令调用功能,我尝试复制该函数并使用 a 从我的脚本中运行它trap foo debug
,但这似乎并没有传播到函数中。我不认为逐行复制会起作用,因为cd
andloops
不能真正被隔离,因为它们是控制语句而不是 subshell 命令。
如果字符串可以只是命令本身的函数,那仍然很有用。