我有一個shell腳本,我希望每次運行腳本時都會自動保存會話文本,所以我在腳本的開頭添加了「script -a output.txt」命令。然而,腳本在這行代碼後停止運行,它只在屏幕上顯示「bash-3.2 $」並且不會繼續。有任何想法嗎?如何在shell腳本中正確運行「script -a xxx.txt」?
在此先感謝!
我有一個shell腳本,我希望每次運行腳本時都會自動保存會話文本,所以我在腳本的開頭添加了「script -a output.txt」命令。然而,腳本在這行代碼後停止運行,它只在屏幕上顯示「bash-3.2 $」並且不會繼續。有任何想法嗎?如何在shell腳本中正確運行「script -a xxx.txt」?
在此先感謝!
問題是腳本啓動一個單獨的子殼比運行實際腳本,以將它們聚合在一起。使用-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
嗨!感謝你的及時回覆!那麼輸出是否會被附加?或者我應該使用腳本-ca'bash script.sh'?謝謝!我會稍後再試 – Hang
@Hang:你也需要指定'-a'選項! – Inian
嗨,抱歉仁安剛剛有機會測試命令。在執行它之後,我將它添加到腳本中後,它說「腳本:非法選項 - c 用法:腳本[-adkpqr] [-t時間] [文件[命令...]]」。我搜索了一下,沒有找到任何特定於「script -c」的東西(讓我震驚!大多數是針對stat或日期或者某事)。順便說一句,我使用zsh,試圖通過「exec bash」改回bash而沒有運氣。有任何想法嗎? :D – Hang
'script'啓動交互式子shell,這就是爲什麼腳本塊。 – dramzy
這是[此SO問題]的副本(http://stackoverflow.com/questions/5985060/bash-script-using-script-command-from-a-bash-script-for-logging-a-session) – dramzy
@dramzy:沒錯!沒能早點看到它。 – Inian