我刚刚阅读的许多帖子都对此有很多回答,但我不明白自己真正在做什么;这一直是碰运气的。
我正在使用的.sh 脚本:
#!/bin/bash
# init
input=$1
output=$(ping -c 1 "$input" 2>/dev/null)
if [ $? -eq 0 ]; then
ip=$(printf '%s' "$output" | gawk -F'[()]' '/PING/{print $2}' 2>/dev/null)
echo "$ip";
sleep 2
else
echo "Host not found";
fi
我刚刚读过的许多帖子都涉及这一点,并指出有几种不同的方法可用于实现这一点,但我仍然不太明白如何正确使用它们。基本上,我试图检查变量“$1”是否已由参数设置,并显示如下内容:
echo No argument given
如果变量为空,而不是仅仅 ping 没有主机。我的问题是:我应该如何做才能不让事情变得过于复杂?
得到帮助总是值得庆幸的,提前致谢。
PS:我对 Linux 环境还很陌生,所以请对我宽容一点。
答案1
我会在开始时添加一个检查。如果失败,则显示一条消息并退出。
#!/bin/bash
# init
if [ -z "$1" ]; then
echo No argument given
exit
fi
input=$1
output=$(ping -c 1 "$input" 2>/dev/null)
if [ $? -eq 0 ]; then
ip=$(printf '%s' "$output" | gawk -F'[()]' '/PING/{print $2}' 2>/dev/null)
echo "$ip";
sleep 2
else
echo "Host not found";
fi
答案2
如果你想知道传递的参数数量,请使用 $#。如下所示:
if [ $# -eq 0 ]; then
echo "No argument given"
fi
希望有所帮助。