我嘗試用 BASH 做一個簡單的腳本,嘗試 ping 每個引數($1 $2 $3...等)。從現在開始,我可以 ping 一個引數并收到好的答案,但是輸入多個引數時它不能正常作業;像這樣(./Script.sh Arg1 Arg2 ....)。另外,該腳本適用于單個 Arguments 條目,但它一直告訴我它們是指向我的第 6 行的錯誤鏈接,然后才給出條件的回顯鏈接。
#!/bin/bash
PING=`ping -c 1 "$@" | grep bytes | wc -l`
for input in "$@"; do "${PING}" ;
if [[ "$PING" -gt 1 ]];then
echo "L'address IP ping"
else
echo "L'adresse IP ne ping pas"
fi
done
輸出是:
./bash3.sh: line 6: 2: command not found
L'address IP ping
如果我在執行之前添加了多個地址,則總是通過“地址無法訪問”的 else
uj5u.com熱心網友回復:
當腳本啟動時,您正在設定命令PING的輸出。ping -c 1 "$@" | grep bytes | wc -l您沒有將其設定為命令列,以便您可以在回圈期間執行它。
使用函式,而不是變數。
您還可以使用該-c選項來grep回傳匹配的計數,而不是通過管道傳送到wc -l
ping_count() {
ping -c 1 "$@" | grep -c bytes
}
for ip in "$@"; do
if [[ $(ping_count "$ip") -gt 1 ]];
then echo "L'address $ip ping"
else echo "L'adresse $ip ne ping pas"
fi
done
此外,ping根據是否收到回應設定其退出狀態。因此,無需計算匹配行,只需測驗ping.
for ip in "$@"; do
if ping -c 1 -q "$ip"
then echo "L'address $ip ping"
else echo "L'adresse $ip ne ping pas"
fi
done
uj5u.com熱心網友回復:
#!/usr/bin/env bash
for input in "$@"
do
ping=$(ping -c 1 $@ | grep bytes | wc -l)
if [ $ping -gt 1 ]; then
echo "L'address IP ping"
else
echo "L'adresse IP ne ping pas"
fi
done
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/447217.html
上一篇:從一個陣列中獲取所有資料
