Код хорошо работает в одной строке, но не в bash - PullRequest
0 голосов
/ 26 апреля 2020

Когда я запускаю код

echo "linux.com ,"  $(dig +short ns linux.com | awk -v RS='' '{gsub("\n", ", "); print $0}') 

Результат

linux.com , ns1.dnsimple.com., ns2.dnsimple.com., ns3.dnsimple.com., ns4.dnsimple.com.

Когда я запускаю в al oop, он не будет работать, пожалуйста, предложите

#!/bin/bash
#/fullpath/dns.sh
#finding DNS of all websites 

yesterday=$(date --date "1 days ago" +%F)


while IFS= read -r line

do

echo "$line,"  $(dig +short ns $line | awk -v RS='' '{gsub("\n", ", "); print $0}') >>  $yesterday.csv

done < /fullpath/domains.csv

Это дает мне только список доменов

000caua5456aod4das98dcp10ad0456a0xa.club
,
007hertz.com
,
0086sp.com
,
00q198.com
,

файл domains.csv

000caua5456aod4das98dcp10ad0456a0xa.club
007hertz.com
0086sp.com
00q198.com

Отредактировано

что я понимаю, читая $ line с "вводом" (с новой строкой)

Ответы [ 2 ]

2 голосов
/ 26 апреля 2020

Проблема в том, что /fullpath/domains.csv поставляется в формате DOS, поэтому вы можете исправить это с помощью IFS:

#!/bin/bash
#/fullpath/dns.sh
#finding DNS of all websites 

yesterday=$(date --date "1 days ago" +%F)


while IFS=$'\r'"$IFS" read -r line
do
    echo "$line,"  $(dig +short ns "$line" | awk -v RS='' '{gsub("\n", ", "); print $0}') >>  $yesterday.csv
done < /fullpath/domains.csv

В качестве альтернативы, вы можете сделать dos2unix /fullpath/domains.csv перед запуском сценария.

0 голосов
/ 26 апреля 2020

Работает с добавлением пропущенных двойных кавычек:

#!/usr/bin/env bash

yesterday=$(date --date "1 days ago" +%F)


while IFS= read -r line

do

echo "$line,"  "$(dig +short ns "$line" | awk -v RS='' '{gsub("\n", ", "); print $0}')" 

done < /fullpath/domains.csv > "$yesterday.csv"

В качестве альтернативы вашему сценарию:

xargs -l1 -c 'set -- "$0" $(dig +short ns "$0"); IFS=,; echo "$*"' </fullpath/domains.csv sh >"$(date --date "1 days ago" +%F).csv"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...