KSHスクリプトで変数値を表示する

KSHスクリプトで変数値を表示する

私はかなり複雑なコードから多くの変数を生成するKSHスクリプトを使用しています。これらの変数が作成されたときにその変数の値を表示するには、スクリプトにどのコマンドを入れることができますか? ECHOは正しい命令ですか?エコー変数は $variable_name です。

ベストアンサー1

おそらくそれがあなたが望むものですset -x。これによりトレースモードが有効になります。シェルは各コマンドを実行する前に印刷します。この行の下にあるスクリプトの2行目を作成してください#!。スクリプトの一部でトレースをオフにするために使用しますset +x

変数の値を表示するには使用できますが、echo "$somevariable"これは必ずしも十分ではありません。二重引用符を省略しないように注意してください。二重引用符がない場合、変数の値は文字列ではなくファイル名のワイルドカードパターンのリストとして解釈されます。この変数には機能しないいくつかの値がありますecho。 kshでは、完全なリストは-e-nとであり、すべて-neオプションとして解釈されます。この解釈を回避するには、代わりにまたはを使用します(以下の2つのコマンドは同じです)。-enechoprintprintf

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

おすすめ記事