Ashで変数の値を見つける方法は?

Ashで変数の値を見つける方法は?

デバッグしたい巨大なスクリプトがあり、構造は次のとおりです。

var "-p Some Parameter"  || return 1
var "-p Other Parameter" || return 0

私はそれが実際に何をしているのか知りたいです(そして、どのvarからエラーメッセージを受け取るので、それが何であるかを知っています)。ただし、そうすると空のecho $var文字echo ${var}列が提供されます。echo "${!var}"機能しない場合(「構文エラー:誤った置換」)

eval e="\$$var"
echo $e

「$」のみが印刷されます。

Ashの変数が実際に同じかどうかを調べる方法はありますか?それとも、スクリプト(Alpineで利用可能)によって実行される実際のコマンドを表示できる一種のトレースはありますか?

ベストアンサー1

var "-p Some Parameter"  || return 1

ashPOSIXに似たシェルと見なされるので、引数としてvar文字列-p Some Parameterを使用して名前付きコマンドを実行します(そして終了ステータスreturnによって呼び出されることもあります)。何が起こるかは、完全に何がvar起こるかに依存します。

これにより、空の文字列が提供されますecho $varecho ${var}

これにより、変数が$var設定されていないか空白になる可能性があります(またはスペースのみを含めることができます)。echo "${var+var is set}"これが重要な場合は、設定されていることを確認してください。

ただし、名前付き変数は、名前付きvarコマンドまたは関数とは関係ありませんvar

echo "${!var}"

変数の値に拡張される間接変数を拡張するためのBashism。にちなんで命名変数var標準ではないため、エラーが発生する可能性が高くなります。

eval e="\$$var"
echo $e

これが何をすべきかわかりません。変数の値をvar変数に割り当ててeから印刷するように見えますが、変数にスペースが含まれている場合は割り当てが中断されます。

おすすめ記事