脚本:记录输出和退出代码

脚本:记录输出和退出代码

script命令将整个 shell 会话记录到文件中。这很棒,但是在查看会话时,我希望能够看到我运行的每个命令的退出代码。

是否可以在script日志中捕获此内容?理想情况下不向会话用户显示它script,但如果有必要,这是可以接受的。

运行脚本示例:

me:~ oliverlade$ script
Script started, output file is typescript
bash-3.2$ echo "hello"
hello
bash-3.2$ true
bash-3.2$ false
bash-3.2$ exit
exit

Script done, output file is typescript

日志文件的内容:

me:~ oliverlade$ cat typescript
Script started on Sun Aug  7 13:02:43 2016
bash-3.2$ echo "hello"
hello
bash-3.2$ true
bash-3.2$ false
bash-3.2$ exit
exit

Script done on Sun Aug  7 13:03:03 2016

我希望它是什么:

me:~ oliverlade$ cat typescript
Script started on Sun Aug  7 13:02:43 2016
bash-3.2$ echo "hello"
hello
(exit 0)
bash-3.2$ true
(exit 0)
bash-3.2$ false
(exit 1)
bash-3.2$ exit
exit

Script done on Sun Aug  7 13:03:03 2016

答案1

script手册页:

-e, --return

“返回子进程的退出代码。使用与 bash 终止相同的格式,信号终止退出代码为 128+n。”我误解了这个...

如果您需要使用script,似乎查看最后退出代码的最佳方法是将其添加到 shell 提示符中。无论如何,这样做并不是一个坏主意。

答案2

您可以将最后执行的命令 ( ) 的退出状态合并到$?主提示符 ( PS1) 中。

一个例子:

$ PS1='$? \$ '
0 $

测试它:

0 $ false
1 $

您必须使用单引号以避免$?在分配给 时扩展PS1。你不应该使用export提示变量。

另一个例子:

$ PS1=$'(exit $?)\n$ '
(exit 0)
$

测试:

(exit 0)
$ false
(exit 1)
$

相关内容