シェルの実行結果を画面出力したい

このQ&Aのポイント
  • シェルの実行結果を画面出力する方法について教えてください。
  • 複数のコマンドを1行ずつ実行し、画面に表示する方法を教えてください。
  • 実行コマンドを1行ずつ表示しながら実行結果を画面に出力する方法を教えてください。
回答を見る
  • ベストアンサー

シェルの実行結果を画面出力したい

お世話になります。 1つのファイルに複数のコマンドを記載して1行毎の実行を考えています。 コマンド実行中は画面に1行ずつ実行コマンドを表示させたいのですが上手くいきません。 どのようにすれば宜しいでしょうか。宜しくお願い致します。 ---------------------------------------------------------------------------- ファイル内容 ---------------------------------------------------------------------------- 実行コマンド1 実行コマンド2 実行コマンド3 実行コマンド4 実行コマンド5 ----------------------------------------------------------------------------

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

  • ベストアンサー
  • trapezium
  • ベストアンサー率62% (276/442)
回答No.4

> 行いたい事は、./script.sh command-file に近いですが./script.sh infileでinfileに書かれた複数行のコマンドを1行ずつ1秒のsleep間隔で実行したいと考えております。 そのスタイルでいいなら、既にそのような動作になってますので違いが分かりません。 ただ調整は必要かもしれません。例えば安全性を考慮して最初に IFS= しておくとか変数 i をもう少し別の名前にするとか、cat の替りに sed '/^[ \t]*$/d;/^[ \t]*#/d' 使うとか。 あとはこれらを叩き台にして適当に改変してください。

QA-Linux
質問者

お礼

ありがとうございました。

その他の回答 (3)

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.3

>1秒間のwaitを持たせて最終行までループさせたいのですがそのようなことは可能でしょうか。 ループという用語は通常 for, while, until など指すのですが、例えば for i in a b c; do echo $i sleep 1 done みたいに。「ファイル内容」全体を繰り返したいのなら全体を for, while で囲う。 > 例えばこのように記載して1行ずつ処理したいと考えています。 それとも1行ごとに拘ってることからして script.sh は #!/bin/sh cat -- $@ | while read i; do echo $i eval $i sleep 1 done とでもしておいて、「ファイル内容」を保存したファイルを引数指定して ./script.sh command-file みたいなことをしたいのかもしれないとは思うけど、いかんせん情報が少い。

QA-Linux
質問者

補足

回答ありがとうございます。大変勉強になります。 情報が少なく申し訳有りませんでした。 行いたい事は、./script.sh command-file に近いですが./script.sh infileでinfileに書かれた複数行のコマンドを1行ずつ1秒のsleep間隔で実行したいと考えております。

  • h271015
  • ベストアンサー率71% (62/87)
回答No.2

> 1秒間のwaitを持たせて最終行までループさせたいのですがそのようなことは可能でしょうか。 以下のようなことを実現したいのであれば、各実行コマンドの後に sleep 1 を実行するようにすれば良いと思います。 ---------------------------------------------------------------------------- ファイル内容 ---------------------------------------------------------------------------- 実行コマンド1 (1秒待つ) 実行コマンド2 (1秒待つ) 実行コマンド3 (1秒待つ) 実行コマンド4 (1秒待つ) 実行コマンド5 ----------------------------------------------------------------------------

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.1

Linux ということですからシェルスクリプトということですよね? 実際にどういう動作を期待してるのか不明ですが、sh -x script.sh とかじゃダメなのですか? ダメならもうすこし具体的に説明してもらえば、可能か不可能(難しそう)か誰が答えてくれるかもしれません。

QA-Linux
質問者

補足

ありがとうございます。 例えばこのように記載して1行ずつ処理したいと考えています。 sh -v script.shで1行ずつ実行することが出来ました。 1秒間のwaitを持たせて最終行までループさせたいのですがそのようなことは可能でしょうか。

関連するQ&A

  • シェルスクリプトで選択してコマンド実行結果表示する

    Linuxのシェルスクリプトで、簡易メニュー画面を表示して、番号を入力して、コマンド実行結果を表示すしたいです。 →その後、ファイルに書き込むようにする。  表示が終わったら、再度簡易メニュー画面を表示して、別の番号を入力して再度コマンド実行結果を表示したいです。 (例:1を入力すると、ファイル容量のコマンド結果が表示、2を入力すると、ユーザーの名前コマンド結果を表示する。10を入力すると、終了)

  • 複数コマンドの実行結果をテキストに出力したい

    バッチファイルで実行した結果をテキストに出力したいです。 コマンド一個であれば問題ないのですが、複数実行した結果をテキストに出力しようと以下の内容でバッチファイルを作ったのですが、実行すると最後のipconfigだけしか出力されませんでした。 複数コマンドの実行結果すべてを出力するためにどこを修正すればよろしいでしょうか。 hostname & wmic bios get serialnumber & ipconfig > C:\Users\user\desktop\%COMPUTERNAME%.txt

  • コマンド実行結果のファイル出力

    systeminfo echo list volume | diskpart のコマンドを実行結果をテキストファイルに出力したいのですが、 echo list volume | diskpart > "c:\status.txt" systeminfo >> "c:\status.txt" としてバッチで実行しても、何も出力されていないません。 コマンドを画面で入力すると、画面に表示されます。 どうしたらよいか教えてください。

  • 対話形式の自動実行

    対話形式を自動実行させる際に #コマンド < 対話内容を記載したファイル にて実行可能なのは知っているのですが、対話の方式が「format」コマンドのように ”選択する文字を入力して<ENTER>”ではなく、”文字を入力したと同時に次の画面”が表示 されるタイプのものを実行する場合はどのように行えばいいのでしょうか? 対話の内容を取得したいので *********************************************************** #(コマンド < 対話内容を記載したファイル) > *.log *********************************************************** というようなかたちで実行すると *********************************************************** #(コマンド < 対話内容を記載したファイル) > *.log # *********************************************************** の状態で画面が止まってしまい操作が効かない状態です。 強制的に画面を閉じて、別画面にて対象のファイル「*.log」を見ると画面が すばやく流れて何も見れず「*.log | grep <キーワード>」では確認できます。 対話形式を実行して、logの内容の取得をシェルにて一括で行いたいのですが、 画面が止まる状況を改善する方法はありますでしょうか。 以上、宜しくお願いします。

  • シェル(sh)で実行コマンドを標準出力するには

    kshでコマンドを実行して結果をファイルにリダイレクトしています。 結果のみファイルに出力され、実行したコマンドを確認することができません。 実行コマンドも一緒にファイルに出力する方法がありましたら教えてください。 なお、実行コマンドをechoするってのはなしで。 多量のコマンドを実行する場合にめんどくさいので。

  • ftpの実行結果を複数のログに出力したい

    初心者です。お世話になります。 ftpの実行を起動するバッチファイルで現在、以下のように記述しています。 ftp -n -s:d:\XXXX\XXXX\XXXX.ftp > %LOGFILE% (d:\XXXX\XXXX\XXXX.ftpは、open~ファイルのputを実行します) %LOGFILE%には、ftpの実行内容がちゃんと出力されています。 %LOGFILE2%にも同じ内容を出力したいです。(追記で) ftp -n -s:d:\XXXX\XXXX\XXXX.ftp >> %LOGFILE2%  という文を追加すると ftp自体が2度実行されてしまうと思うのですが 複数ファイルにログ出力することは可能なのでしょうか。 ご教授ください。宜しくお願い致します。

  • シェルスクリプトで出力と処理の同時実行

    シェルスクリプトで出力コマンドを実行し、キーワードで 抽出してその行数で分岐させようと考えています。 (出力コマンドはミドルウェアのコマンドでアプリケーションの 状態を表示するコマンドです) 出力コマンドの結果を出力させたいのですが下記のような 流れで行おうとしています。 いちいちファイルに保存せずに出力と、行数の変数への格納を 一度でできる方法はないでしょうか。 出力コマンド | grep [キーワード] | tee tmp/file hensuu=wc -l tmp/file case $hensuu in ・・・ よろしくお願いします。

  • シェルスクリプトファイルからjavaを実行したい

    シェルスクリプトファイル(拡張子が.shのファイル)からJavaを実行したいのですが上手くいきません。 コマンドラインで直接 cd javaのファイルが置いてあるディレクトリへのフルパス を実行した後 java 実行するクラス名 引数 とすると上手く動きます。 上記2行をshファイルにコピペしてみましたが、エラーになり動きません。 エラーは : No such file or directory cdをしている行とcdで移動しようとしているディレクトリパス Exception in thread "main" java.lang.NoClassDefFoundError: 実行するクラス shファイルの1行目に #!/bin/sh や #!/bin/bash を入れてみましたが、どちらも挙動が変わりません。(エラーのまま) shファイルはUTF-8を文字コードにして改行はLFのみです。 また、javaコマンドを実行するとき -cp や -classpath 引数でjavaのファイルが有るディレクトリを指定してみましたが挙動が変わりません。 shの実行はコマンドラインから sh shファイル(絶対パスで) source shファイル(絶対パスで) でやってみましたが駄目でした。 javaのファイルが有るディレクトリに対してパスを貼ってみましたが挙動が変わりません。 コマンドラインからコピペしてshファイルを作っていますので、フォルダ名等のつづりミスの可能性は低いと思います。 何か設定が足りないのでしょうか? よろしくお願いいたします。

  • SQL実行結果取得

    バッチファイルにて、 sqlplusコマンドにより*.sqlファイルを実行し、 SQL文を発行していますが、 実行結果(処理件数)をコマンドプロンプト上 に表示したいのですが、どなたか。手法をご存知では ないでしょうか?

  • GPG暗号化をシェルスクリプトで実行する方法

    いつもお世話になっております。 パスフレーズの入力しGPGコマンドでファイルの暗号化を自動化するシェルスクリプトの書き方について教えてもらえませんでしょうか。 あるファイルをgpgコマンドを使いパスフレーズを入力し暗号化したいのですが、 > gpg -c ORG_FILE パスフレーズ入力 パスフレーズ再入力 このパスフレーズを指定して実行する作業を自動化したいと思っています。 このGPG暗号化パスフレーズの入力、再入力をシェルスクリプトで実行するにはどのようなコマンドの書き方をすればよいかご教授願えませんでしょうか。 どうぞ宜しくお願い致します。