shell/bash/sh/で特殊文字を含む変数を保存して印刷する方法

shell/bash/sh/で特殊文字を含む変数を保存して印刷する方法

デフォルトでは、プログラムパラメータを含む変数をさまざまな形式で複数回ロード、保存、および再ロードする必要があります。

問題は、この変数は先頭に「-」記号が含まれているため、通常の変数と見なすことができないことです。コンテンツを表示できるように印刷または読み込むと、使用するかどうか\\を決定する前に最初に継続的に必要なため、作業が困難になります。

1つの秘訣は常に保存することですが、 \\読み取り前にecho $itユースケースの変数として最後の出力を読み取りました。

これは非常に実用的ではないため、変数の内容を保存し、それを実行するコードを妨げない方法が必要です。

次の変数はyadgdbでデフォルトで使用されますが、他のプログラムでも使用できます。

たとえば、私のコンテキストでこのような変数を使用できるかどうかをクイックテスト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

おすすめ記事