这是我收到的作业。
我被要求解释这段代码的目的是什么。但是,当我执行此操作时,没有出现任何输出。
由于我是 shell 脚本编写的新手,有人可以帮助我吗?
非常感谢。
#!/bin/bash
# $1 = node IP
# $2 = node port
# $3 = hostname to resolve
[[ $# != 3 ]] && logger -p local0.error -t ${0##*/} -- "usage: ${0##*/} <node IP> <node port> <hostname to resolve>" && exit 1
node_ip=$(echo $1 | sed 's/::ffff://')
dig +short @$node_ip $3 IN A &> /dev/null
[[ $? == 0 ]] && echo “UP”
请您参考如下方法:
$#
:传递给脚本的参数数量,如果您像这样执行此脚本:bash filename.sh p1 p2 p3 p4
,则filename.sh
中的$#
将被评估为4
$?
:上一个命令的返回值。在 shell 中,返回值非零表示发生了错误。
[[ $# != 3 ]] && logger ... && 1
:表示如果参数数量不是 3,则记录一些内容并退出并返回值 1
node_ip=$(echo $1 | sed 's/::ffff://')
:替换第一个参数中的::ffff:
,并赋值给node_ip
dig +short @$node_ip $3 IN A &>/dev/null
:调用 dig
命令并将输出重定向到 /dev/null
,因此您看不到任何打印出来的内容。顺便说一下,我不知道 dig
是做什么的
[[ $? == 0 ]] && echo “UP”
:如果 dig
命令(即前一个命令)返回零值,表示成功,则打印单词 UP