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...")

为此使用 subshel​​l 有点粗糙,但它可以让您免于反斜杠引号。

于 2011-11-10T19:05:08.073 回答