在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) 的手册页,我的记忆不是那好的。