パイプを使用してコマンドを実行し、stdoutとstderrを変数にリダイレクトするシェルスクリプト関数

Abhishek kulkarni

任意のコマンドを実行し、stdoutとstderrを変数にフェッチするための共通関数を作成しました。ただし、パイプを使用したコマンドは正しく機能しません。

私もevalで試しましたが、stdout / stderrを変数にリダイレクトできません

これが私の機能です

LOGFILE="mylog.txt"

Log() {
    msg=$2
    level=$1
    timestamp=`date "+[%F %T]"`
    echo ""
    echo "" >> $LOGFILE
    echo "$timestamp [$level] ==> $msg"
    echo ""
    echo "$timestamp [$level] ==> $msg" >> $LOGFILE
    echo "" >> $LOGFILE
}

RunCommand() {
    CMD=$1
    MSG1=`printf "Executing command \nCommand: $1"`

    OUTPUT=`$CMD 2>&1`
    ERRCODE=`echo $?`

    MSG2=`printf "\n\nOutput: \n%s" "${OUTPUT}"`
    MSG3=`printf "\n\nError Code: %s\n%s" "${ERRCODE}"`
    Log INFO "${MSG1}${MSG2}${MSG3}"
}

command="df -h | grep /$"
RunCommand "$command"

出力:

[2019-05-02 05:01:29] [INFO] ==> Executing command
Command: df -h | grep /$

Output:
df: '|': No such file or directory
df: grep: No such file or directory
df: '/$': No such file or directory

Error Code: 1

他のコマンドはエラーなしで機能しています。別の長いコマンドでスクリプトを実行しました。

[2019-05-02 05:10:20] [INFO] ==> Executing command
Command: find /var/bundle/upgrade/ -type f -size +1b

Output:
/var/bundle/upgrade/upgrade.sh
/var/bundle/upgrade/run_task.py
/var/bundle/upgrade/lib/UpgradeTask.pyc
/var/bundle/upgrade/lib/Constants.pyc
/var/bundle/upgrade/lib/Constants.py
/var/bundle/upgrade/lib/UpgradeTask.py
/var/bundle/upgrade/util/FileSystem.pyc

Error Code: 0
サンウルヴァリン

以下の変更があなたのために働くかどうかを確認してください

RunCommand() {
    CMD=$1
    MSG1=`printf "Executing command \nCommand: $1"`

    OUTPUT=$(eval "$CMD 2>&1")
    ERRCODE=`echo $?`

    MSG2=`printf "\n\nOutput: \n%s" "${OUTPUT}"`
    MSG3=`printf "\n\nError Code: %s\n%s" "${ERRCODE}"`
    Log INFO "${MSG1}${MSG2}${MSG3}"
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

引数とリダイレクトを使用してコマンドを実行するBashスクリプト

分類Dev

シェルスクリプトのコマンドライン入力として変数を使用する

分類Dev

スクリプト内の変数にstderrリダイレクトを使用してパイプコマンドの出力を割り当てるときのcsh(tcsh)のあいまいな出力リダイレクト

分類Dev

`find`と` xargs`を使用してシェルスクリプトで複数のコマンドを実行する

分類Dev

数値を解析して次のコマンドにリダイレクトするシェルスクリプトを作成しますか?

分類Dev

スクリプトでsudosuを使用してコマンドを実行し、stdinとstdoutをリダイレクトします

分類Dev

PHP の exec() 関数を使用してシェル コマンドの出力をリダイレクトする

分類Dev

Linuxのコマンドラインから関数を使用してPythonスクリプトを実行する

分類Dev

リモートマシンで変数を使用してsshおよびシェルスクリプトでコマンドを実行する

分類Dev

リモートマシンで変数を使用してsshおよびシェルスクリプトでコマンドを実行する

分類Dev

変数を使用して出力リダイレクトを格納するシェルスクリプト

分類Dev

stderrを変数にリダイレクトし、stdoutをコンソールに保持する方法

分類Dev

シェルスクリプトを使用してjarファイルを実行するときにkillコマンドを制限する

分類Dev

コマンドラインを使用して、プロセスの開始後にSTDERR / STDOUTをリダイレクトしますか?

分類Dev

シェルスクリプトにコマンドライン引数として「*」を渡す

分類Dev

シェルスクリプト内で変数としてJAVAマルチライン出力を使用する

分類Dev

gitコマンドの実行時に、stderrをstdoutにリダイレクトし、stdoutを/ dev / nullにリダイレクトします

分類Dev

execコマンドで変数を介してリダイレクトオプションを指定する

分類Dev

シェル変数をコマンドライン引数としてシェルスクリプトに渡す方法

分類Dev

エキスパンド関数を使用してシェルスクリプトコードを理解する

分類Dev

cygwinを使用してcmdコマンドをネットで実行し、stdoutをリダイレクトする

分類Dev

シェルスクリプトで変数をパラメーターとしてBigqueryコマンドラインに渡す方法

分類Dev

複数のファイルに対してtabixコマンドを実行するためのシェルスクリプト

分類Dev

リダイレクトコマンドの後にstdoutとstderrをリダイレクトします

分類Dev

シェル:stdoutを/ dev / nullにリダイレクトし、stderrをstdoutにリダイレクトする

分類Dev

Jenkins SSHプラグイン-タスク(ビルド/リリース)に応じて異なるシェルスクリプトコマンドを実行します-環境変数

分類Dev

変数パラメータ bash スクリプトを使用して、複数のディレクトリでコマンドを実行します

分類Dev

関数でパイプラインを介してエコーをリダイレクトするときに環境変数が設定されない

分類Dev

ローカル環境変数を使用して、SSHを使用してリモートマシンでシェルスクリプトを実行する

Related 関連記事

  1. 1

    引数とリダイレクトを使用してコマンドを実行するBashスクリプト

  2. 2

    シェルスクリプトのコマンドライン入力として変数を使用する

  3. 3

    スクリプト内の変数にstderrリダイレクトを使用してパイプコマンドの出力を割り当てるときのcsh(tcsh)のあいまいな出力リダイレクト

  4. 4

    `find`と` xargs`を使用してシェルスクリプトで複数のコマンドを実行する

  5. 5

    数値を解析して次のコマンドにリダイレクトするシェルスクリプトを作成しますか?

  6. 6

    スクリプトでsudosuを使用してコマンドを実行し、stdinとstdoutをリダイレクトします

  7. 7

    PHP の exec() 関数を使用してシェル コマンドの出力をリダイレクトする

  8. 8

    Linuxのコマンドラインから関数を使用してPythonスクリプトを実行する

  9. 9

    リモートマシンで変数を使用してsshおよびシェルスクリプトでコマンドを実行する

  10. 10

    リモートマシンで変数を使用してsshおよびシェルスクリプトでコマンドを実行する

  11. 11

    変数を使用して出力リダイレクトを格納するシェルスクリプト

  12. 12

    stderrを変数にリダイレクトし、stdoutをコンソールに保持する方法

  13. 13

    シェルスクリプトを使用してjarファイルを実行するときにkillコマンドを制限する

  14. 14

    コマンドラインを使用して、プロセスの開始後にSTDERR / STDOUTをリダイレクトしますか?

  15. 15

    シェルスクリプトにコマンドライン引数として「*」を渡す

  16. 16

    シェルスクリプト内で変数としてJAVAマルチライン出力を使用する

  17. 17

    gitコマンドの実行時に、stderrをstdoutにリダイレクトし、stdoutを/ dev / nullにリダイレクトします

  18. 18

    execコマンドで変数を介してリダイレクトオプションを指定する

  19. 19

    シェル変数をコマンドライン引数としてシェルスクリプトに渡す方法

  20. 20

    エキスパンド関数を使用してシェルスクリプトコードを理解する

  21. 21

    cygwinを使用してcmdコマンドをネットで実行し、stdoutをリダイレクトする

  22. 22

    シェルスクリプトで変数をパラメーターとしてBigqueryコマンドラインに渡す方法

  23. 23

    複数のファイルに対してtabixコマンドを実行するためのシェルスクリプト

  24. 24

    リダイレクトコマンドの後にstdoutとstderrをリダイレクトします

  25. 25

    シェル:stdoutを/ dev / nullにリダイレクトし、stderrをstdoutにリダイレクトする

  26. 26

    Jenkins SSHプラグイン-タスク(ビルド/リリース)に応じて異なるシェルスクリプトコマンドを実行します-環境変数

  27. 27

    変数パラメータ bash スクリプトを使用して、複数のディレクトリでコマンドを実行します

  28. 28

    関数でパイプラインを介してエコーをリダイレクトするときに環境変数が設定されない

  29. 29

    ローカル環境変数を使用して、SSHを使用してリモートマシンでシェルスクリプトを実行する

ホットタグ

アーカイブ