シェルコマンドを実行時にエコーする方法 質問する

シェルコマンドを実行時にエコーする方法 質問する

シェル スクリプトで、呼び出されたすべてのシェル コマンドをエコーし​​、変数名を展開するにはどうすればよいですか?

たとえば、次の行があるとします。

ls $DIRNAME

スクリプトでコマンドを実行し、次の内容を表示したい。

ls /full/path/to/some/dir

目的は、呼び出されたすべてのシェル コマンドとその引数のログを保存することです。このようなログを生成するより良い方法はあるでしょうか?

ベストアンサー1

set -xまたは、set -o xtrace変数を展開し、行の前に小さな + 記号を出力します。

set -vまたは、set -o verbose印刷前に変数を展開しません。

上記の設定をオフにするには、set +xと を使用します。set +v

スクリプトの最初の行に#!/bin/sh -x(または) を置くと、スクリプトの後半の(または)-vと同じ効果が得られます。set -x-v

上記は でも動作します/bin/sh

bash-hackersのwikiをご覧くださいset属性、そしてデバッグ

$ cat shl
#!/bin/bash                                                                     

DIR=/tmp/so
ls $DIR

$ bash -x shl 
+ DIR=/tmp/so
+ ls /tmp/so
$

おすすめ記事