• ベストアンサー

スクリプトの処理状況を記録するには?

こんばんわ宜しくお願い致します。RedHat9を使用してます。 $ test.sh #!/bin/bash -x : というスクリプトなのですが 以下のようにしてスクリプトが実行されていく様を見ているのですがこれを記録しようと思いまして $ ./test.sh > test.txt としてリダイレクトしたのですが何も表示されません。 一体どのようにすればリダイレクトできるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.1

いろいろなやり方がありますが参考にしてください。 (1) エラー出力(2)を標準出力(1)に変更する。 $ ./test.sh > test.txt 2>&1 $ $ cat test.txt + echo abc abc + echo def def $ (2) scriptコマンドでコンソールに表示されるすべてを記録する。 $ script <----- scriptコマンド実行 Script started, file is typescript $ ./test.sh  <----- test.sh実行 + echo abc abc + echo def def $ exit <----- scriptコマンド終了 Script done, file is typescript $ cat typescript <----- scriptコマンドが記録したtypescriptファイルを見る Script started on 2006年03月24日 21時01分00秒 $ ./test.sh + echo abc abc + echo def def kuma@ns:~$ exit Script done on 2006年03月24日 21時01分05秒 $

Erika111
質問者

お礼

どうも有り難うございました。 とても便利ですね。

関連するQ&A

  • シェルスクリプトの1行目に#!を書いてもダメなのはなぜ?

    test.shというシェルスクリプトを #!/bin/bash echo "bash test" のように書き、chmod +x test.shを実行し、 test.shと入力すると、bash testが表示されるはずですが、 エラーbash: test.sh :command not found が出ます。which bashでパスを見ると /bin/bashなので、問題ないはずなんですが。 ちなみに、bash test.shと入力すると、正常に実行されます。 同様のことがperlスクリプト #!/usr/bin/perl print "perl test\n"; についても起こります。 何か設定がまずいのでしょうか? RedHatLinux7.2を使用しています。

  • シェルスクリプト(Bash偏)の実行ファイルに関するご質問があります。

    シェルスクリプト(Bash偏)の実行ファイルに関するご質問があります。 ファイル名を変更するシェルスクリプトをbashで行おうとプログラムを作成したのですが、 実行するとbad interpreter: ディレクトリではありません とメッセージが出て終了します。記述に誤りがあるのか、実行の仕方が悪いのか分かりません。教えて下さい。 シェルの記述内容は ファイル名をtest.sh #!/bin/bash/ -f mv A.txt A.ori exit 実行方法として #>chmod x+a test.sh #>./test.sh で行いました。そうしたら、bad interpreter: ディレクトリーではありません とメッセージが出ます。 ちなみに #>. test.sh で実行するとターミナルがシェルの実行と同時に閉じてしまいますが、シェルを実行したディレクトリーを確認すると、処理が終わっておりました。

  • シェルスクリプト trap処理の流れにつきまして

    シェルスクリプト作成しておりますが、 trap処理について質問がありますので、ご教授お願い致します。 以下、テストしたいと思っているスクリプトを記載いたします。 #!/bin/sh trap "echo 'stopped'" 1 2 3 15 echo start > test1.txt sleep 100 echo end > test1.txt 上記スクリプトを実行し、Ctrl+cもしくは、 kill -15 でスクリプトを削除した場合、 sleep中にスクリプト中断していると思うのですが、 end文字列がtest1.txtに書き込まれてしまいます。 trapが処理される流れというのは、どのような流れなのでしょうか。 また途中で中断しているのであれば、途中で以下処理を 行なわないようにするにはどうすればよろしいでしょうか。 宜しくお願いいたします。

  • [シェルスクリプト内で bashコマンド後のコマンドが実行されない]

    [シェルスクリプト内で bashコマンド後のコマンドが実行されない] 以下の様にシェルスクリプトを記述するとコマンド2が実行されません。 #! /bin/sh コマンド1 bash コマンド2 bash環境でコマンド2を実行させるにはどうしたら良いのでしょうか?

  • RedHatのShellScriptについて

    初めて投稿します。よろしくお願いします。 RedHat7.0でShellScriptを作成しています。 初めて作るのでよくわかっていません。 下記スクリプトを実行すると、 ./test.sh:aaa:command not found とエラーになります。 原因がおわかりの方、アドバイスをいただけないでしょうか。 よろしくお願いいたします。 ******test.shの内容***************** #!/bin/bash . /tmp/test.txt para=$1 export para echo $para ************************************ ***test.txtの内容******************* aaa *********************************** ********やりたい事***************** 変数paraにtest.txtに定義されている値を 代入して表示したい。 ********************************** 権限はどちらのファイルも chmod 777 test.sh chmod 777 test.txt に設定してあります。 回答よろしくお願いいたします。

  • シェルスクリプトからPHP実行

    シェルスクリプト(bash)内で、以下のようにPHPを呼んだ場合、 その次の処理がPHPの終了を待たずに実行されるようなのですが、 どうしてでしょうか? #!\bin\bash /usr/local/php4/bin/php /home/test.php echo "test!" 以上 なぜか test! という表示がPHPの処理中に出るように思えます。

  • RedHatでのシェルスクリプトについて

    こんにちは。また質問させて下さい。 redhat7.0のシェルスクリプトで、 サンプルコード片手に以下のコードを記述しました。 やりたい事は、もしaaa.txtというファイルが存在したら その内容を表示させ、存在しなければその旨のメッセージを 表示させる、という単純なものです。 この時、ファイルが存在しない時に ./test.sh: /tmp/aaa.txt: No such file or directry というエラーになってしまいます。 エラーを抜けてメッセージを表示させるには どうしたらいいでしょうか。 アドバイスよろしくお願いいたします。 *********記述したコードです。************* #!/bin/bash fileName=/tmp/aaa.txt read varStr1 varStr2 <fileName if [ -a fileName ]; then echo {$varStr1} else echo{$fileName}{$varStr2} fi

  • シェルスクリプトの作り方

    OSはVineで、bashシェルです。 シェルスクリプトの作り方ですが、 1.ファイルを作る。 例えば、 #!bin/sh cd tmp このとき、ディレクトリはどこでもいいのでしょうか? 2.権限を付ける。 chmod u+x filename 3.実行 ./filename 他に気をつけることはないでしょうか? 実行すると、 bash: ./filename: bad interpreter: そのようなファイルやディレクトリはありません となってしまって、どうしても実行できません。

  • telnet 110 のシェルスクリプトについて

    linux初心者です。 telnet localhost 110 の確認スクリプトを作成したいのですが、調べた結果以下のスクリプトを作成しましたがうまく動作してくれません。 お分かりになる方ご教授ください。 test.sh #!/bin/bash sleep 1; echo user $1 sleep 1; echo pass $2 sleep 1; echo stat sleep 1; echo quit test1.sh #!/bin/bash sh ./test.sh | telnet localhost 110 ./test1.sh hogeuser hogepass 同じアカウントの場合$1 $2の部分にuser名 パスワードを記入すればいいのは分かるのですが、毎回アカウント・パスワードが違うため引数に渡したいと思います。 よろしくお願いいたします。

  • bashスクリプトについて

    #!/usr/local/bin/bash など1行目に書いてbashのスクリプトを作成したいのですが、 計算式を作りたいのですができないものでしょうか? たとえばe2pという名前で ###----------------### echo "script test" $i=1 printf $i ###----------------### として、./e2pと実行しても、script test は表示されても、以下二行はエラー ./e2p: =1: command not found ./e2p: print: command not found となって表示されませんでした。 どのようにすれば、 $a=1 $b=3 print $a+b などいったことができるのでしょうか? また、根底から間違っている気もします・・・どのようにすればよろしいでしょうか?