我正在尝试使用script命令记录bash会话.
该script命令是通过使用bash脚本执行的,但只要执行该命令,bash脚本就会终止.
我试图使用各种组合来调用命令,但总是使用相同的结果(一旦调用命令就终止bash脚本).我得到的输出如下:
Script started, file is typescript
root@ubuntu: ...
Run Code Online (Sandbox Code Playgroud)
我也尝试用最后调用命令,&但没有运气.
任何人都可以告诉我应该如何从bash脚本调用命令?
谢谢
les*_*ana 22
您的shell脚本没有终止.它仍然在运行.您正在获得提示,因为它script正在生成一个新的shell.
用例script是:
script(生成一个新的shell)script所以基本上script按预期工作.你必须找到另一种方法来实现你想要的.
您可以像这样记录脚本的执行:
#! /bin/bash
exec > logfile 2>&1
set -x
FOO=BAR
echo $FOO
Run Code Online (Sandbox Code Playgroud)
说明:
exec > logfile 2>&1 将stdout和stderr重定向到logfileset -x 在执行之前使bash打印每个命令例:
$ ./foo.sh
$ cat logfile
+ FOO=BAR
+ echo BAR
BAR
Run Code Online (Sandbox Code Playgroud)
这种方法的缺点是脚本没有输出供人看的输出.一切都进入日志文件.
或者你可以这样做:
#! /bin/bash
# nothing special here
FOO=BAR
echo $FOO
Run Code Online (Sandbox Code Playgroud)
然后像这样执行:
$ script -c "bash -x foo.sh"
Script started, file is typescript
+ FOO=BAR
+ echo BAR
BAR
Script done, file is typescript
$ cat typescript
Script started on Mi 18 Mai 2011 01:05:29 CEST
+ FOO=BAR
+ echo BAR
BAR
Script done on Mi 18 Mai 2011 01:05:29 CEST
Run Code Online (Sandbox Code Playgroud)
您的bash脚本仍在运行,但它已经生成了一个新的交互式shell.bash脚本正在等待script完成,这只会在交互式shell终止时(通过被杀或用户输入exit)发生.
要在script记录之后创建命令script,请执行以下操作:
script build_log -c 'echo -e "* This line should appear inside the /"build_log/" log file..."'
Run Code Online (Sandbox Code Playgroud)
但是,script在运行该命令后将停止运行.
要在其中运行多个命令script,请将这些命令放在另一个bash脚本中,并将该bash脚本指定为运行该-c选项的命令.
| 归档时间: |
|
| 查看次数: |
56744 次 |
| 最近记录: |