word = $ word“`expr substr'$ {-b:board}'1 3`”的含义?

时间:2019-01-15 22:51:59

标签: bash sh expr

我正在将一些bash脚本转换为C ++,并遇到了这条线...

word="yahoo"

word=$word"`expr substr '${ -b :board}' 1 3`"

我了解expr substr的作用,但是我提供的“ $ {-b:board}”参数对我来说没有任何意义。

当我尝试在终端上运行它时:

 echo $word

输出:

 yahoo${

我将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:1)

这个问题与Bash或sh无关,而与expr有关,这是一个独立命令,例如,它是GNU Coreutils的一部分。如果我们咨询the manual,就会发现

  

expr计算一个表达式并将结果写在标准输出上。表达式的每个标记都必须是一个单独的参数。

  

substr string position length
  返回以 string 开头的 position 的子字符串。如果 length position 为负,零或非数字,则返回空字符串。

所以命令

length

接收字符串expr substr '${ -b :board}' 1 3 并提取一个长度为3的子字符串,从位置1开始,该子字符串为${ -b :board}

命令

${ 

word=$word"`expr substr '${ -b :board}' 1 3`" 命令放入命令替换(反引号)中,并将结果附加到expr的扩展名中,该扩展名此时包含$word,因此您将以这种方式结束与yahoo

所有这些,我看不出这样做的理由。 yahoo${ 命令的输出是一个常量字符串,因此您实际上可以将所有内容替换为

expr

请注意,在现代Bash中,您可以通过参数扩展获得相同的功能:

word='yahoo${ '

但是结果是一样的,而且没有更多的上下文似乎一开始就没有任何意义。