2015-12-19 96 views
2

工作,我想用「文字」命令,我有以下的代碼命令記錄終端不使用bash

#!/bin/bash 
script & 
wait 
echo "hello" 
echo "hello2" 
pid=$(pidof script | awk '{print $1}') 
kill -9 $pid 

我需要的腳本命令捕獲輸出,但該命令後,「腳本&「的輸出爲:

  Script started, file is typescript    
     Script done, file is typescript 

和腳本不記錄什麼,爲什麼任何想法?

+0

不建議在非交互式shell中運行'script'。 'script'的內殼始終是交互式的,這可能會導致意想不到的結果。 – Kadir

+0

'腳本&'後面緊接着'wait'就相當於'腳本'。 – chepner

+0

請勿使用'kill -9'。對於表現良好的程序,「殺死」就足夠了。 – chepner

回答

4

這是你應該怎麼做:

script <output-file> <commands> 

例子:

script typescript bash -c 'echo "hello"; echo "hello2"' 
Script started, output file is typescript 
hello 
hello2 

Script done, output file is typescript 

然後檢查輸出文件的創建:

cat typescript 
Script started on Sat Dec 19 01:54:04 2015 
hello 
hello2 

Script done on Sat Dec 19 01:54:04 2015 
+0

您也可以調用腳本,例如**腳本打字稿bash -c ./something.sh'** – anubhava

+0

好的,謝謝解答 – shaveax

2

有兩種方法可以使用script指令:

  • 只保存你的代碼的輸出(即,批處理模式)

    $ script filename bash -c 'echo foo; echo bar' 
    

    將輸出

    Script started, file is filename 
    foo 
    bar 
    Script done, file is filename 
    
  • 保存所有的只是你的終端上顯示(即交互模式)。要結束腳本,只需鍵入exit或按Ctrl-d

    $ script filename 
    Script started, file is filename 
    $ echo foo 
    foo 
    $ echo bar 
    bar 
    $ exit 
    exit 
    Script done, file is filename 
    

需要注意的是該批次的方法是使用script的互動古典方式破解。

在你的情況下,只要忘記&kill的東西,並在你想要腳本結束時按下Ctrl-D。