ログレポートのコマンド置換で実行されたコマンドを取得する方法

ログレポートのコマンド置換で実行されたコマンドを取得する方法

作業を簡単にするには、次の点を考慮してください。

x=$(java --version)
echo "x: $x"

期待どおりに動作します。

x: openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment Temurin-11.0.13+8 (build 11.0.13+8)
OpenJDK Client VM Temurin-11.0.13+8 (build 11.0.13+8, mixed mode)

私に必要なものは次のとおりです。

x=$(java --version)
echo "x: $x"
echo "The '???' command was executed"

したがって、出力は次のようになります

x: openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment Temurin-11.0.13+8 (build 11.0.13+8)
OpenJDK Client VM Temurin-11.0.13+8 (build 11.0.13+8, mixed mode)
The 'java -version' command was executed

代わりに何を使用できますか???

調査して調べましたが、set +x/-xここに100%適用されません。

ベストアンサー1

不明な理由は、スクリプトで実行されたばかりのコマンドが何であるかがわからないためです。しかし、ただの楽しみのために:

exec 2>tmpfile; set -x
x=$(java --version)
set +x; exec 2>&1
awk  'sub(/^\+\+\+/, "") {print "The \"" $0 "\" command was executed."} ' tmpfile
The " java --version" command was executed.

このawkコマンドは、(xtrace)オプションによって導入された文字$PS4(この場合はREメタ文字)を削除し、-x必要な行を印刷します。後でtmpfileを削除する必要があります。

おすすめ記事