2

Bash でコマンド置換を無効にすることは可能ですか?
後ろにバックスラッシュを付けたり、文字列を引用したりせずに、複数のバッククォート文字を含む文字列をコマンドライン引数としてプログラムに渡したいです。
ありがとうございました。

4

1 に答える 1

4

あなたの質問の根拠となる誤解があると思います。引用、おそらくあなたの状況に対する解決策です。しかし、おそらくあなたはまだ引用の正しい方法を見つけていないか、または同様の方法を見つけていません.

危険な文字列がソース コード内で (引用やエスケープなしで) そのままである必要がある場合は、それを別のファイルに入れて、そこから読み取ることができます。

dangerous_string=$(cat dangerous_string_file.txt)

解釈せずにコマンドに渡す場合は、二重引用符を使用して解釈を防ぎます。

my_command "$dangerous_string"

解釈を防ぐために二重引用符のような sth を使用せずに不注意に文字列を渡すことが知られているため、文字列の引用バージョンを受け取る必要があるコマンドにそれを渡す必要がある場合は、いつでもprintf引用バージョンを取得するために使用できます。

quoted_dangerous_string=$(printf "%q" "$dangerous_string")
careless_command "$quoted_dangerous_string"

これらのオプションのすべてがあなたの状況で役に立たない場合は、問題がどこにあるのかを詳しく説明してください.

于 2013-10-24T08:40:32.877 に答える