这个表达式评估的是什么? (bash shell脚本)

时间:2010-07-29 11:48:46

标签: linux bash ubuntu

我正在尝试通过编写糟糕的bash脚本执行代码遍历。

我遇到过这样的声明:

FOOBAR_NAME=`date +WeekNo.%W`

脚本中没有任何RHS变量的事先声明,在此声明之前的行。

所以我的问题是:

当FOOBAR_NAME在脚本中使用几行作为$ FOOBAR_NAME时,FOOBAR_NAME会解决什么问题?

6 个答案:

答案 0 :(得分:3)

试试吧!

$date +WeekNo.%W
WeekNo.30

答案 1 :(得分:2)

RHS中没有引用任何变量。

反引号运算符(``) evaluates its contents and returns the output, similar (identical?) to $(). It's a quick way to write an eval`(用其他语言编写)。

在shell中输入date +WeekNo.%W。打印的内容(在stdout中,折叠换行符)将存储在FOOBAR_NAME中。

请注意,评估仅发生一次,即在分配期间。每次引用date时都不会执行FOOBAR_NAME

答案 2 :(得分:0)

有关date命令及其格式选项的说明,请参阅man date%W是周数。

答案 3 :(得分:0)

这是使用date命令的格式字符串来创建包含周数的字符串。

反引号在它们之间执行命令;该行将结果分配给shell变量FOOBAR_NAME。

因此,如果您真的想知道它的作用,只需将文本剪切并粘贴到`之间并执行它。

答案 4 :(得分:0)

您可以在man date中找到答案:如果您指定以+开头的参数,则该参数的其余部分将被视为格式字符串。 Weekno.部分按字面意思,%W执行:

  

%W周的年数,周一为周的第一天(00..53)

答案 5 :(得分:0)

赋值运算符(“=”)将其右侧部分的值赋给左侧部分的变量。这里的变量是FOOBAR_NAME

正确的部分是子壳。反引号(“```”)创建一个子shell。该子shell的输出将转到变量。

子shell改变了Unix date命令。所有Unix命令的手册页都在Internet上。有a Unix man page for date。在这里,%W将被替换为周数。

因此变量的值为“WeekNo”加上星期数。