変数site
を設定し、echo
またはprintf
で出力する必要があると考えてください。ただし、一重引用符を使用して何かを記述し、変数を使用したい場合はどうすればよいですか?
例:
$ site=unix.stackexchange.com
$ echo "visit:$site"
visit:unix.stackexchange.com
しかし、私が単一引用符を使用する場合:
$ echo 'visit:$site'
visit:$site
次に、''
は強力な引用であり、変数を展開しません
私は何かを試しました:
$ echo 'visit:"$site"'
visit:"$site"
しかし成功しません。したがって、私は単一引用符を使用しながら変数内の値を出力する方法を探しています。
単一引用符で変数を展開することはできません。ただし、一重引用符を終了して二重引用符を開始できます。
echo 'visit:"'"$site"'"'
または、二重引用符内で二重引用符をバックスラッシュすることができます。
echo "visit:\"$site\""
可変コンテンツの印刷を扱う場合は、 echoの代わりにprintf を使用する必要があります。
printf 'visit:%s\n' "$site"
visit:
の文字に関係なく、$site
の後に$site
の内容と改行が出力されます。
チョロバは正しいです。
これがある種のなぞなぞだったとしても、私はこれで応答します。
cat << EOF | sh
> echo 'visit:$site'
> EOF
ジャンダーが指摘するように、これはインジェクション攻撃に対して広く開かれています。それは深刻な答えではなかったので、もし誰かがこのようなものを使用することを考えているなら、それを信頼できない入力で使用しないでください。たとえば、$site
文字列は、コンテンツを盲目的に実行する前の有効なURLです。 this のようなものが役立つ可能性があります(ただし、指定された式は注入を許可するため完全ではありませんが、そのようなメカニズムを使用してテストします)。
リクエストの権利を理解できれば、エコーされた文字列をeval(uate)できます。例えば。:
# eval echo 'visit:$site'
visit:unix.stackexchange.com