以下のスクリプトは機能しません。どんな助けでも大変感謝します。
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
主な問題は、コマンドとパラメータを同時に参照することです。
ファイルを1行ずつ読み取るには、常にwhile
ループではなくfor
ループを使用してください。
http://mywiki.wooledge.org/BashFAQ/001
また、
「コマンド」
構文は2020年以来廃止され、次の形式に置き換えられました。
$(command)
最新の構文を使用することをお勧めします。 $() 内のバックスラッシュ処理は驚くべきことではなく、$() は入れ子になりやすいです。バラよりhttp://mywiki.wooledge.org/BashFAQ/082