5

最初にこの質問を見てください: Bash or GoogleCL: new line in a string parameter

変数 ${date} を「概要」に追加したい:

google youtube post ~/videos/cat-falls-down-stairs.avi Comedy \
    --tags 'currency of the internet' \
    --summary $'Today is ${date}. Poor whiskers takes a tumble.\nShe'\''s fine, though, don'\''t worry.'

ただし、変数はbashの単一引用符内で展開されません。

それは可能ですか?

注: GoogleCLは、Python で記述されたコマンドライン プログラムです。私はPython 2.6でUbuntu 10.10を使用しています。

4

3 に答える 3

15

一重引用符で囲まれた文字列内で変数を展開しようとするのではなく、一般的な解決策は、一重引用符と二重引用符で囲まれた文字列を連結することです。言い換えると:

「今日は「${date}」です。貧しい' ...
于 2011-11-10T18:28:06.497 に答える
4

リストにさらに別のオプションを追加します。変数を改行として定義し、それを二重引用符で囲んで使用します。

nl=$'\n'
...
   --summary "Today is ${date}. Poor whiskers takes a tumble.${nl}She's fine, though, don't worry."
于 2011-11-10T21:37:26.517 に答える
1

変数は単一引用符内では展開されません。ウィリアムが示唆するようにするか、行を二重引用符に書き直して、必要に応じて変数を展開することができます。

"Today is ${date}. Poor whiskers takes a tumble.\nShe's fine, though, don't worry."

おまけ: このようにすると、一重引用符をエスケープする必要がなくなります。

リンクを読んだところ、\n は展開しないとのことでした。そのための回避策は次のようになります。

--summary $(echo -e "Today is...")

これにサブシェルを使用するのは少し粗雑ですが、引用符をバックスラッシュする必要がなくなります。

于 2011-11-10T19:05:08.073 に答える