Bashでこのドキュメントの「$」をどのようにエコーしますか?
たとえば、$ABC=home_dir
。
$ ssh hostname sudo -s <<EOF
echo "$ABC=home_dir" > file
EOF
しかし、変数として扱われます。テキストを印刷するには$
?
ベストアンサー1
これを文書化し、文書の内容を拡張したり、特殊文字を解釈したくない場合は、次のように単一引用符でタグを引用できます。
$ cat >file <<'EOF'
echo "$ABC=home_dir"
EOF
ただし、例で説明されている状況は、実際にはsshを介してこのコンテンツをsudoによって実行されているリモートシステムに転送するため、より複雑です。このシステムはシェルも呼び出します(したがってシェルもコンテンツを拡張します)。これを正しく行うには、いくつかのレベルの引用が必要ですが、sudoには端末が必要であり(パスワードを要求することができます)、標準入力からリダイレクトされるため、機能しません。ここではそれを使用してもssh -t
役に立ちません。
私もジョンの言葉に同意する。これが本当に欲しいものかどうかはわかりません。シェル変数参照に値を割り当てることは正当ではないので、生成したいファイルがシェルスクリプトの場合は何もしません。説明そのように動作します。たぶん一歩退いて自分の状況を説明したら本物より多くのことをしたい場合は、もっと助けてください。