我写了一个站点诊断脚本,并一直在MacOS上使用iTerm2对其进行测试。可能会使用此脚本的人中有很大一部分使用Windows和Git Bash(与Windows和Mac OS相比可能是50 | 50):因此,不支持Windows可能不是一种选择。
我在这里有人在他们的Windows PC上测试该脚本,但该脚本立即失败。有谁知道为什么此功能在Mac上成功而在Windows上失败?
_ping_test(){
# Define Error Codes & Messages Below:
local _success="0"
local _success_message="${_green}SUCCESS:${_reset_color} Ping Test Passed"
local _unknown_host="68"
local _unknown_host_message="${_red}ERROR:${_reset_color} Ping Test Failed on ${_url} - Unknown Host"
local _unrecognized_code="${_red}ERROR:${_reset_color} Ping Test Failed - Unrecognized Status Code${_ping_test} "
local _url="${1}.testdomain.net"
local _ping_url=$(ping -c 1 -q $_url &> /dev/null; echo $?)
if [ "${_ping_url}" == "${_success}" ] ; then
echo $_success_message
elif [ "${_ping_url}" == "${_unknown_host}" ] ; then
echo $_unknown_host_message
exit 1
elif true ; then
echo $_unrecognized_code
exit 1
fi
}
运行它会在他的计算机上返回“无法识别的代码”响应,但是鉴于同一站点在我的Mac上是成功的。
我回显了$ _url,这将返回正确的站点。我还尝试删除了&> /dev/null
部分以回听问题所在,但是它返回它无法识别命令ping
然后,我直接在他的Git Bash窗口中直接运行ping命令,该命令在shell脚本之外起作用。
我意识到ping测试部分有点愚蠢(如果他们输入了错误的URL,则用来退出脚本),但是稍后运行的更有价值的ssh命令也同样失败
答案 0 :(得分:3)
我设法抓住一台Windows PC和TiL,您传递给ping的参数遵循基于OS的不同范例:
-c表示在Mac OS上计数
但是
-c表示在需要管理员访问权限的Windows上进行分隔
修复参数,然后起作用