什么&这行代码如何工作:{message:0:1} {message:23:17}

时间:2016-08-12 18:33:19

标签: macos bash diff

希望有人帮助我了解这一行代码。

使用diff命令比较两个文件,这些文件以某种方式允许其他命令(例如message:0:1message:23:17)访问它的结果。

这是如何运作的?

message=$(diff previousscan.txt scan.txt | grep 192)

#get first char which indicates if the host came up or went away
iostring="${message:0:1}"

#get first ip-number from the list
computer="${message:23:17}"

#show ip-number in notify if host came up
if [ "$iostring" = \> ]; then
        notify-send "$computer online"
        fi
#show ip-number in notify if host went away
if [ "$iostring" = \< ]; then
        notify-send "$computer offline"
        fi

1 个答案:

答案 0 :(得分:3)

$message不是命令;它是一个保存diff命令的输出的变量。后面的行参考子串; ${message:0:1}是存储在$message中的任何内容的第一个字符(从偏移0开始的1个字符)。

显示子字符串机制的简单示例:

$ message="abcdefghijklmnop"
$ echo ${message:0:1}
a
$ echo ${message:7:3}
hij

构造foo=$(bar)在子shell中运行命令bar,如果只是在变量{{1}中运行命令bar,则放置通常在终端中看到的输出。 }}