Debian Sid - Оставайтесь на несколько недель позади текущего розыгрыша

Во-первых, нет никакого смысла в awk '{print $ 0}' , который просто печатает каждую строку ввода. Вместо этого используйте whod = $ (whois "$ domain") . В любом случае, ваша основная проблема в том, что вы не цитируете свои переменные. Это вызывает всевозможные проблемы, а главное, когда вы echo $ whod , вы получаете одну строку со всеми данными. Следовательно, ваш awk '{print $ 3}' применяется к этой строке (сокращено для ясности):

Whois Server Version 2.0 Domain names in the .com and .net [ ... ]

И третье слово - Version , которое, по-видимому, и является тем, что вы получать. Вы также используете массивы ( expdate = ($ (echo $ whod ...)) ), и я не понимаю почему. Может быть несколько совпадений? В любом случае рабочая версия вашего скрипта:

while IFS="," read domain rdate; do
  whod="$(whois "$domain")"
  cdate="$(echo "$whod" | grep -m 1 -i Creation| awk -F" " '{print $3}')"
  expdate="$(echo "$whod" |grep -m 1 -i 'Expiration Date' | awk -F" " '{print $3}')"
  printf "$domain,$cdate,$expdate \n"
done < "temp1.txt"
3
30.01.2019, 14:27
1 ответ

Я бы посоветовал поместить ваш скрипт в /etc/init.d и поместить символическую ссылку на него в /etc/rc5.d и убедиться, что скрипт является chmod +x. Это должно запускать ваш скрипт в то время, когда доступны те же вещи, что и на терминале, когда он уже загружен. Таким образом, он больше не должен выдавать ошибок.

Ссылка:Уровни запуска в Linux

0
27.01.2020, 21:33

Теги

Похожие вопросы