单词的含义=$word "`expr substr '${ -b :board}' 1 3`" ?



我正在研究一些 bash 脚本转换为 C++ 并遇到了这一行......

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

我理解 expr substr 的作用,但我提供"${ -b :board}"的论点对我来说没有任何意义。

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

echo $word

输出:

yahoo${

我将不胜感激任何意见,谢谢。

这个问题不是关于 Bash 或 sh,而是关于expr,一个独立的命令,例如 GNU Coreutils 的一部分。如果我们查阅手册,我们会发现

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

substrstring position length
返回从position开始且长度最多为lengthstring的子字符串。如果positionlength为负数、零或非数字,则返回 null 字符串。

所以命令

expr substr '${ -b :board}' 1 3

获取字符串${ -b :board}并提取长度为 3 的子字符串,从位置 1 开始,即${

命令

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

expr命令放入命令替换(反引号)中,并将结果附加到$word的扩展中,此时包含yahoo,所以这就是你最终得到yahoo${的方式。

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

word='yahoo${ '

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

word='yahoo'
var='${ -b :board}'
word+=${var:0:3}

但结果是一样的,如果没有更多的背景,似乎一开始就没有任何意义。

相关内容

  • 没有找到相关文章

最新更新