下面的脚本不起作用。任何帮助,将不胜感激
for host in `cat db_hosts_imsi.txt` ; do "ping6 $host"; done
-bash: ping6 2606:ae00:3001:8311:172:16:244:1d: command not found
-bash: ping6 2606:ae00:3001:8311:172:16:244:45: command not found
-bash: ping6 2606:ae00:3001:8311:172:16:244:54: command not found
答案1
像这样:
while IFS= read -r host; do
ping6 "$host"
done < db_hosts_imsi.txt
主要问题是同时引用命令和参数。
要逐行读取文件,请始终使用while
循环,而不是for
循环。
http://mywiki.wooledge.org/BashFAQ/001
此外,
`命令`
语法在 2020 年已被弃用,取而代之的是这种形式
$(command)
建议使用最新的语法。 $() 内部的反斜杠处理并不令人意外,而且 $() 更容易嵌套。看http://mywiki.wooledge.org/BashFAQ/082