コマンド文字列を bash 変数に格納

コマンド文字列を bash 変数に格納

$OUTPUT私はコマンドの結果を格納する変数を使ってこのようなコマンドを実行しています。しかし、コマンド自体を変数に保存してステータスメールに含めたいと思います。

OUTPUT=$(php -f $LOCATION/somefile.php -- -process "$INPUTFILE" 2>&1)

最初の部分が機能します。それからこれを試しました。

IMPORTCOMMAND='php -f' "$LOCATION"'/somefile.php -- -process'"$INPUTFILE"

しかし、文字列を変数に格納する代わりに、コマンドを2番目に実行するようです。

編集する:

以下は、電子メール本文を作成する方法のモデルです。通常の文字列の周りに一重引用符を入れて、bash変数の周りに二重引用符を付けました。

BODY='<b color="red">Output:</b><br />'"$OUTPUT"'<b color="red">Command:</b> '"$IMPORTCOMMAND"


次に、改行文字を次のようにhtml " "に置き換えようとします。

BODY="${BODY//$'\n'/<br />}"
#changed $BODY="" to BODY="" per yaegashi's suggestion

yaegashiのアドバイスに従うと、次のエラーがなくなりました。

/usr/local/bin/some-script.sh: line 59: <b: command not found

IMPORTCOMMANDただし、変数を割り当てると元のエラーがまだ存在します。

答え1

引用しすぎて場所が間違っているようです。

somefile.php以下は、との間にスペースがあるため、IMPORTCOMMANDを設定せずに実行しようとします。php -fsomefile.php.

IMPORTCOMMAND='php -f' "$LOCATION"'/somefile.php -- -process'"$INPUTFILE"

しなければならない:

import_command="php -f $LOCATION/somefile.php -- -process $INPUTFILE"
output=$( ${import_command} 2>&1 )

または(「LOCATION」または「INPUTFILE」にスペースが含まれている場合)

import_command=( php -f "$LOCATION/somefile.php" -- -process "$INPUTFILE" )
output=$( "${import_command[@]}" 2>&1 )

そしてそれを表示します:

BODY="<b color='red'>Output:</b><br />${output}
      <b color='red'>Command:</b>     ${import_command[*]}"

関連情報