帮助理解脚本中的剪切命令

帮助理解脚本中的剪切命令

在bash脚本中,有以下两行:

ipaddr=$0
segments=`echo $ipaddr | cut --delimiter=. --fields=2-3 --output-delimiter=/`

我不知道如何解释$segments创建变量的第二行。

这部分是如何工作的?

答案1

这是细分。

echo 将输出变量 $ipaddr 中的任何内容

echo $ipaddr

这就是然后管道式的到以下命令。

Cut 可用于定界(即拆分为多个部分)字符串。 cut 参数告诉它在哪里“剪切”字符串(这里是在点上,所以如果 IP 地址采用以下格式:“198.51.100.0”,它将被拆分为 198 51 100 和 0)。另一个参数告诉它应该截取已剪切字符串的哪些部分。这里是第 2 部分和第 3 部分。在我上面给出的示例 ip 中,这将给出 51 和 100。最后一个参数告诉它将它选择的部分(第 2 部分和第 3 部分)与新的分隔符(这里是斜杠)放在一起)。结果是 51/100。

cut --delimiter=. --fields=2-3 --output-delimiter=/

所有这些的结果(在我的示例中为 51/100)保存在段变量内。每当您运行以下命令时:

somevar=`somecommand`

反引号之间的内容都会被执行。它返回的内容被传递到等号的左侧。

答案2

我们来剖析一下。

echo $ipaddr

假设这是一个以十进制书写的 IPv4 地址,则类似于 100.90.80.70。我们通过管道传递到

`cut --分隔符=。 --fields=2-3 --output-delimiter=/

这将在“.”处截断其每个输入行(在本例中只有一个),因此我们现在有 100 90 80 70。它从这里选择字段 2 到 3,即我们保留 90 80。这是写出的,分开的经过 '/'。快速实验表明,结果为 90/80。

以上内容主要来自查看 cut(1) 的手册页,我的记忆不是好的。

相关内容