
デフォルトでは、プログラムパラメータを含む変数をさまざまな形式で複数回ロード、保存、および再ロードする必要があります。
問題は、この変数は先頭に「-」記号が含まれているため、通常の変数と見なすことができないことです。コンテンツを表示できるように印刷または読み込むと、使用するかどうか\\
を決定する前に最初に継続的に必要なため、作業が困難になります。
1つの秘訣は常に保存することですが、 \\
読み取り前にecho $it
ユースケースの変数として最後の出力を読み取りました。
これは非常に実用的ではないため、変数の内容を保存し、それを実行するコードを妨げない方法が必要です。
次の変数はyad
gdbでデフォルトで使用されますが、他のプログラムでも使用できます。
たとえば、私のコンテキストでこのような変数を使用できるかどうかをクイックテストprintf
いいえprintfパラメータは必要ありません。これが原因です:
gdbParameters="-ex 'set pagination off' -ex 'set environment G_MESSAGES_DEBUG = all'"
printf $gdbParameters
返品:
printf: usage: printf [-v var] format [arguments]
みんなありがとうございます。
答え1
要点は、printf
変数を直接印刷するのに使用せずに型を渡し、変数をパラメータとして渡すことです。
$ gdbParameters="-ex 'set pagination off' -ex 'set environment G_MESSAGES_DEBUG = all'"
$ printf '%s\n' "$gdbParameters"
-ex 'set pagination off' -ex 'set environment G_MESSAGES_DEBUG = all'
変数を使用したいコードを邪魔しないように変数を保存することは不可能です。代わりに、変数のランダムな内容を処理するために注意を払って、常に素晴らしくきれいなコードを書く必要があります。
常に変数を引用するなどの基本的なベストプラクティスです(参照スペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか?そしてbash / POSIXシェルで変数を引用することを忘れてしまうセキュリティリスク--
)、プログラムを呼び出して変数を入力として渡すときは、標準を使用してオプションの終わり()を表しますe.g. grep -- "$variable" file
。
答え2
シェルPOSIX
が規制に準拠している場合(組み込みコマンドの場合printf
)、または呼び出しが規制に準拠している場合は、printf
次のことを試してください。
printf -- "$var"
これは、printf
次のパラメータがオプションとして解釈されないように指示します。
$var
ただし、一般に、コンテンツの割合やバックスラッシュによって出力が予期しない方法で変更される可能性があることに注意してください。このため、
printf "%s" "$var"
より良い解決策です。