【问题标题】:Cannot assign Variable in Bash无法在 Bash 中分配变量
【发布时间】:2014-06-04 04:05:35
【问题描述】:

我正在尝试将变量“email-addr”分配给文件中的值(只有一个)。我尝试使用的代码会引发错误。我只想将一个文件的内容,一个电子邮件地址分配给一个变量字符串。

 email-addr=`$(cat ../address)`

../address 的内容只有一行

myemail@gmail.com 

上面写着:

myemail@gmail.com
cat: invalid option -- 'a'
Try `cat --help' for more information.

我做错了什么?

【问题讨论】:

  • 连字符不允许作为变量名中的字符。
  • 你为什么同时使用反引号和$()?他们做同样的事情。
  • 抱歉重复使用。我真的很困惑何时使用它们。我不知道 '-' 不能用在变量名中。这似乎是问题的症结所在,现在似乎很好。谢谢。

标签: bash variables variable-assignment cat


【解决方案1】:

试试:

my_email=$(cat ../address)

反引号和$(...) 都执行内部命令并替换值。所以你正在执行cat ../address 的输出作为另一个命令。

并且- 不允许在变量名中使用,我使用了_

我不确定您为什么会从cat 收到有关无效选项的错误,我在您发布的内容中看不到任何会导致这种情况的内容。我怀疑它来自您脚本中的其他内容。

【讨论】:

  • 非常感谢。现在好像没事了。
  • 是的,没关系。命令替换从命令的输出中删除最后一个换行符,因为大多数命令都有一个尾随换行符。
  • 你也可以my_email=$(<../address)
【解决方案2】:

如果您在文件../address 的第一行中只有一个电子邮件地址,并且您想分配给一个变量(如前所述,变量名不能有连字符),请考虑以下 做事的标准方式

read -r my_email < ../address

您的my_email=$(cat ../address)不是我们将如何在 bash 中执行此任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    相关资源
    最近更新 更多