シェル スクリプトは終了しませんでした。それはまだ実行されています。 script
のため、プロンプトが表示されます 新しいシェルを生成しています。表示されるプロンプトは、生成されたシェルからのプロンプトです。
script
の通常の使用例 は次のようなものです:
script
.これにより、新しいシェルが生成されます。script
によって作成されたログファイルを調べる
基本的に script
期待どおりに動作しています。あなたが望むものを達成するには、別の方法を見つける必要があります。
次のようにスクリプトの実行をログに記録できます:
#! /bin/bash
exec > logfile 2>&1
set -x
FOO=BAR
echo $FOO
説明:
exec > logfile 2>&1
stdout と stderr をログファイルにリダイレクトset -x
コマンドを実行する前に bash にすべてのコマンドを出力させます
例:
$ ./foo.sh
# (no output here because everything goes to logfile)
$ cat logfile
+ FOO=BAR
+ echo BAR
BAR
この方法の欠点は、スクリプトが人間に見える出力を出力しないことです。すべてがログファイルに送られます。
または、次のようにすることもできます:
#! /bin/bash
# nothing special here
FOO=BAR
echo $FOO
次に、次のように実行します:
$ script -c "bash -x foo.sh"
Script started, file is typescript
+ FOO=BAR
+ echo BAR
BAR
Script done, file is typescript
出力が直接表示され、ログファイルにも保存されるようになりました (ログファイルのデフォルト名は 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
bash スクリプトはまだ実行中ですが、新しいインタラクティブ シェルが生成されています。 bash スクリプトは script
を待機しています これは、対話型シェルが終了した場合 (強制終了されるか、ユーザーが exit
を入力することによって) のみ発生します。 ).
script
以降のコマンドを作成するには script
によってログに記録されます 、次のようにします:
script build_log -c 'echo -e "* This line should appear inside the /"build_log/" log file..."'
ただし、script
そのコマンドを実行した後、実行を停止します。
script
内で複数のコマンドを実行するには 、それらのコマンドを別の bash スクリプト内に配置し、その bash スクリプトを -c
に対して実行するコマンドとして指定します。 オプション。