Bash:单引号变量

时间:2011-11-10 18:23:31

标签: python linux bash command-line googlecl

首先来看看这个问题: 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上。

3 个答案:

答案 0 :(得分:14)

不是尝试在单个带引号的字符串中扩展变量,而是典型的解决方案是连接单引号和双引号字符串。换句话说:

'Today is'"${date}"'. Poor' ...

答案 1 :(得分:4)

我将在列表中添加另一个选项:将变量定义为换行符,然后在双引号内使用它。

nl=$'\n'
...
   --summary "Today is ${date}. Poor whiskers takes a tumble.${nl}She's fine, though, don't worry."

答案 2 :(得分:1)

变量不会在单引号内展开。您可以像William建议的那样做,或者您可以将该行重写为双引号,这将根据需要扩展变量。

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

奖励:这样做你不必逃避单引号。

现在我读了链接,你说\ n不会扩展。对此的解决方法是这样的:

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

为此使用子shell有点粗糙,但它可以避免反斜杠引用。