Как упростить команду: четыре одинаковые структуры?

ntpdate 110.75.186.247 >> /var/log/ntpdate.log ||  ntpdate 110.75.186.247 >> /var/log/ntpdate.log || ntpdate 203.123.48.218 >> /var/log/ntpdate.log|| ntpdate 103.16.199.21  >> /var/log/ntpdate.log

Я попробовал два метода, ни один из них не удалось.

ntpdate 110.75.186.247  ||  ntpdate 110.75.186.247  || ntpdate 203.123.48.218 || ntpdate 103.16.199.21  >> /var/log/ntpdate.log
ntpdate 110.75.186.247  ||  ntpdate 110.75.186.247  || ntpdate 203.123.48.218 || ntpdate 103.16.199.21  &&>> /var/log/ntpdate.log

Как упростить команду?

1
задан 27 March 2016 в 17:49

3 ответа

Используйте простое for конструкция:

#!/bin/bash
for ip in 110.75.186.247 110.75.186.247 203.123.48.218 103.16.199.21; do
    out="$(ntpdate "$ip" 2>/dev/null)" && echo "$out" >>/var/log/ntpdate.log && break
done

Или сохраняющий IP-адреса в массиве:

#!/bin/bash
ips=( 110.75.186.247 110.75.186.247 203.123.48.218 103.16.199.21 )
for ip in "${ips[@]}"; do
    out="$(ntpdate "$ip" 2>/dev/null)" && echo "$out" >>/var/log/ntpdate.log && break
done
<час>

Еще более простой, избавьтесь от промежуточной переменной (благодарит @kos):

#!/bin/bash
ips=( 110.75.186.247 110.75.186.247 203.123.48.218 103.16.199.21 )
for ip in "${ips[@]}"; do
    ntpdate "$ip" 2>/dev/null >>/var/log/ntpdate.log && break
done
2
ответ дан 28 March 2016 в 03:49
  • 1
    Спасибо. Большая часть того меню отсутствовала для меня, но теперь, когда я знаю что option' s имя был, я смог искать эффективнее и нашел, что должен был переключиться от IBus до fcitx в меню Language Support для тех опций появиться. После этого я смог последовать Вашему совету и получить его работа. За Ваше здоровье! – Thalfon 28 June 2017 в 21:23
  1. Проверка, если файл .bash_aliases существует в Вашем корневом каталоге с ls -a ~/.bash_aliases (если не запускает текстовый редактор по Вашему выбору, который находится в моем случае nano ~/.bash_aliases)

  2. Добавляют следующую строку в тот файл: alias update-time='ntpdate 110.75.186.247 >> /var/log/ntpdate.log || ntpdate 110.75.186.247 >> /var/log/ntpdate.log || ntpdate 203.123.48.218 >> /var/log/ntpdate.log || ntpdate 103.16.199.21 >> /var/log/ntpdate.log'

  3. Сохраняют и выходят из редактора

  4. Теперь, просто можно выполнить команду update-time, и отдых является волшебным :)

2
ответ дан 28 March 2016 в 03:49
  • 1
    You' очень приветствующееся ре и я надеюсь, что оно помогает. Счастливый болтать с Вами на IRC, если Вы застреваете, получая разрешенный. – jones0610 28 June 2017 в 14:21

Проблема с конструкцией

ntpdate 192.0.2.1 || ntpdate 203.0.113.2 >> /var/log/ntpdate.log

состоит в том, что >> только относится к последней команде. Можно обратиться к этому при помощи круглой скобки вокруг команд как это:

( ntpdate 192.0.2.1 || ntpdate 203.0.113.2 ) >> /var/log/ntpdate.log

можно думать, что ввод ntpdate многократно избыточен, и должно быть возможно устранить это. Можно устранить повторение ntpdate при помощи цикла. Хотя в Вашем конкретном случае команда так проста, что использование цикла представляет больше сложности, чем это устраняет:

for IP in 192.0.2.1 203.0.113.2
do
    ntpdate "$IP" && break
done >> /var/log/ntpdate.log

, Кроме того, может случиться так, что Ваша исходная проблема лучше решена путем вызова ntpdate только однажды с несколькими адресами сервера:

ntpdate 192.0.2.1 203.0.113.2 >> /var/log/ntpdate.log
1
ответ дан 28 March 2016 в 03:49
  • 1
    У меня действительно есть он работающий над сетью, печатающей и из Windows и из Android. Когда я открываю окно About для system settings-> Printers-> Add-> Сетевой принтер это говорит " системный принтер конфигурации, конфигурация CUPS tool". так или иначе, когда я открываю его, я становлюсь странным " экран tearing" только на том окне. См. pasteboard.co/2pg0spF7x.png, у меня есть Samsung' s унив драйвер Linux, но никогда не слышал о конфигураторе. I' ll пытаются установить его. I' m только в этом компьютере один раз в неделю, по вторникам. @jones0610 я мог возможно обеспокоить Вас в следующий вторник с моим обновлением статуса? – maleta 28 June 2017 в 14:22

Другие вопросы по тегам:

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