下面的脚本不起作用。任何帮助,将不胜感激
for host in `cat db_hosts_imsi.txt` ; do "ping6 $host"; done
Run Code Online (Sandbox Code Playgroud)
-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
Run Code Online (Sandbox Code Playgroud)
像这样:
while IFS= read -r host; do
ping6 "$host"
done < db_hosts_imsi.txt
Run Code Online (Sandbox Code Playgroud)
主要问题是同时引用命令和参数。
并且要逐行读取文件,请始终使用while循环,而不是for循环。
http://mywiki.wooledge.org/BashFAQ/001
此外,该
`命令`
语法在 2020 年被弃用,取而代之的是形式
$(command)
Run Code Online (Sandbox Code Playgroud)
推荐使用最新的语法。$() 中的反斜杠处理不那么令人惊讶,而且 $() 更容易嵌套。见http://mywiki.wooledge.org/BashFAQ/082