シェルスクリプトでtypescriptを取得する方法

シェルスクリプトでtypescriptを取得する方法

Posted at February 18,2015 12:03 AM
Tag:[Linux]

シェルスクリプトでtypescriptを取得する方法を紹介します。

1.問題点

シェルスクリプトでtypescriptを取得したいので次のようなスクリプト(foo.sh)を書きました。

#!/bin/sh
 
script -a ./foo.log
ls -l
exit

scriptコマンドの-aオプションは、typescriptファイルをfoo.logで取得するためのものです。

が、このスクリプトを、

% ./foo.sh

と実行しても、

Script started, output file is ./foo.log

と、最初のscriptコマンドで停止してしまい、lsコマンドが実行されません。

ちなみにCtrl-dでスクリプトを強制終了するとlsコマンドが実行されますが、scriptのログに実行結果は記録されません。

2.シェルスクリプトでtypescriptを取得する

シェルスクリプトでtypescriptを取得するには、scriptコマンドに-cオプションをつけ、そこにシェルスクリプトを指定する方法があります。

% script [-a ファイル名] [-c コマンド]

1項の例は次のように変更します。

% script -a ./foo.log -c ./foo.sh

これで次のようなスクリプトファイルを得ることができます。

-cオプションは、インタラクティブなシェルではなく、指定されたコマンドを実行するオプションです。

scriptコマンドで-cオプションが提供されていない場合は、

% script [-a ファイル名] [コマンド]

とします。

1項の例は次のように変更します。

% script -a ./foo.log ./foo.sh

とします。

どちらに対応しているかはmanコマンドで確認するとよいでしょう。

3.シェルスクリプトの中でscriptを実行すると停止する理由

シェルスクリプトの中でscriptを実行すると処理が停止する理由は、scriptの実行でシェルがforkされるためのようです。

そしてforkされたシェルが終了すると記録を終了します。

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)