我正在 Linux 上撰寫一個簡單的 bash 腳本來 ping 一些主機,例如:
ping -c 1 google.com
ping -c 1 amazon.com
...
在我的方法中,我將主機從一個單獨的檔案加載到一個陣列中,然后回圈遍歷這些元素。使用陣列中的元素呼叫 ping 命令時會出現問題。執行以下腳本會給我一條錯誤訊息。
#!/bin/bash
IFS=$'\n' read -d '' -r hosts < hostnames.txt
for host in "${hosts[@]}"
do
ping -c 1 ${host}
done
我猜語法有問題,但我還沒弄明白。
uj5u.com熱心網友回復:
你hostnames.txt是在 Windows 機器上生成的嗎?
您的主機名有尾隨\r字符,因此查找失敗。
試試這個:
cp hostnames.txt hostnames.txt.bkp
dos2unix hostnames.txt.bkp hostnames.txt
然后再次運行您的腳本。
如果您尚未dos2unix安裝并且不想安裝它......也許您tr已經可用。在這種情況下,這也應該可以解決問題:
tr -d '\r' < hostnames.txt.bkp > hostnames.txt
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/479316.html
標籤:重击
