2017-01-22 60 views
0

我有一個shell腳本,我希望每次運行腳本時都會自動保存會話文本,所以我在腳本的開頭添加了「script -a output.txt」命令。然而,腳本在這行代碼後停止運行,它只在屏幕上顯示「bash-3.2 $」並且不會繼續。有任何想法嗎?如何在shell腳本中正確運行「script -a xxx.txt」?

在此先感謝!

+0

'script'啓動交互式子shell,這就是爲什麼腳本塊。 – dramzy

+0

這是[此SO問題]的副本(http://stackoverflow.com/questions/5985060/bash-script-using-script-command-from-a-bash-script-for-logging-a-session) – dramzy

+0

@dramzy:沒錯!沒能早點看到它。 – Inian

回答

1

問題是腳本啓動一個單獨的子殼比運行實際腳本,以將它們聚合在一起。使用-c標誌script

-c, --command command 
     Run the command rather than an interactive shell. This makes 
     it easy for a script to capture the output of a program that 
     behaves differently when its stdout is not a tty. 

只要做,

script -c 'bash yourScript.sh' -a output.txt 
+0

嗨!感謝你的及時回覆!那麼輸出是否會被附加?或者我應該使用腳本-ca'bash script.sh'?謝謝!我會稍後再試 – Hang

+0

@Hang:你也需要指定'-a'選項! – Inian

+0

嗨,抱歉仁安剛剛有機會測試命令。在執行它之後,我將它添加到腳本中後,它說「腳本:非法選項 - c 用法:腳本[-adkpqr] [-t時間] [文件[命令...]]」。我搜索了一下,沒有找到任何特定於「script -c」的東西(讓我震驚!大多數是針對stat或日期或者某事)。順便說一句,我使用zsh,試圖通過「exec bash」改回bash而沒有運氣。有任何想法嗎? :D – Hang