Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        2年前关闭。
                                                                                            
                
        
这是我收到的作业。

已要求我解释此代码的目的是什么。但是,当我执行此操作时,没有出现任何输出。

由于我是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命令(即前一个命令)返回零值,表示SUCCESS,则打印单词UP

08-05 10:32