一重引用符内に変数内の値を印刷する方法はありますか?

一重引用符内に変数内の値を印刷する方法はありますか?

変数を設定し、orで印刷するsite必要があると思います。しかし、一重引用符を使用して何かを作成し、変数を使用したい場合はどうすればよいですか?echoprintf

例:

$ site=unix.stackexchange.com
$ echo "visit:$site"
visit:unix.stackexchange.com

ただし、単一引用符を使用する場合:

$ echo 'visit:$site'
visit:$site

もしそうなら、私たちはこれが''強力な参照であり、変数を拡張しないことを知っています。

私はいくつか試しました:

$ echo 'visit:"$site"'
visit:"$site"

しかし、成功しませんでした。だから私は探しています。一重引用符を使用して変数の内部値を印刷する方法

答え1

一重引用符内に変数を拡張することはできません。ただし、一重引用符を終了して二重引用符を開始できます。

echo 'visit:"'"$site"'"'

または、二重引用符内の二重引用符をバックスラッシュとして扱うこともできます。

echo "visit:\"$site\""

答え2

可変コンテンツを印刷するときは、次の点に従う必要があります。エコの代わりにprintf:

printf 'visit:%s\n' "$site"

の文字に関係なく、visit:次の内容$siteと改行文字が出力されます$site

答え3

私はあなたが出力したいと仮定します

visit:'unix.stackexchange.com'

しかし、スティーブンの答え危険なので、次のアプローチをお勧めします。

$ cat << EOF
> visit:'$site'
> EOF

答え4

文字列と変数を連結するときは、変数は引用符の外側になければなりません。引用符の間にある内容は文字通り印刷されるからです。

echo 'visit:'$site

変数の後に文字列を続行するには、次のようにします。

echo 'visit: '$site' rest of the sentence'

関連情報