私はかなり複雑なコードから多くの変数を生成するKSHスクリプトを使用しています。これらの変数が作成されたときにその変数の値を表示するには、スクリプトにどのコマンドを入れることができますか? ECHOは正しい命令ですか?エコー変数は $variable_name です。?
ベストアンサー1
おそらくそれがあなたが望むものですset -x
。これによりトレースモードが有効になります。シェルは各コマンドを実行する前に印刷します。この行の下にあるスクリプトの2行目を作成してください#!
。スクリプトの一部でトレースをオフにするために使用しますset +x
。
変数の値を表示するには使用できますが、echo "$somevariable"
これは必ずしも十分ではありません。二重引用符を省略しないように注意してください。二重引用符がない場合、変数の値は文字列ではなくファイル名のワイルドカードパターンのリストとして解釈されます。この変数には機能しないいくつかの値がありますecho
。 kshでは、完全なリストは-e
、-n
とであり、すべて-ne
オプションとして解釈されます。この解釈を回避するには、代わりにまたはを使用します(以下の2つのコマンドは同じです)。-en
echo
print
printf
print -r -- "$somevariable"
printf '%s\n' "$somevariable"
変数の値に末尾のスペースや印刷できない文字が含まれている場合、画面には表示されません。変数値の明確な表現を印刷するには、%q
エスケープを使用してください。printf
printf '$%s is %q\n' somevariable "$somevariable"
関数に入れることができます。
trace_variables () {
typeset _trace_variables__var
for _trace_variables__var; do
typeset -n _trace_variables__ref="$_trace_variables__var"
printf "%s = %q\\n" "$_trace_variables__var" "$_trace_variables__ref"
done
}
…
trace_variables somevariable anothervariable