У вас уже есть IP-адрес; так что вы можете просто использовать его:
for host in 1.5.4.7 1.5.3.9; do
ssh core@$host "sudo grep -A 2 hi /home/abc.txt" && \
printf "%s\n" "$host"
done
Запуск hostname
, как в примере кода в вашем вопросе, выведет имя хоста , а не IP-адрес , который вы сказали, что хотите.
Использование &&
для разделения команд приведет к запуску последующей команды только в том случае, если (и только если )код выхода последующей команды равен нулю;если grep
не находит совпадений, он не возвращает ноль и вторая команда не выполняется.
Кроме того, хотя я мало что знаю о вашем конкретном -случае использования, я обычно считаю, что при запуске подобных вещей легко показать хост до вывода того, что должно быть запущено на хосте. а не после , но это так же просто, как переместить оператор printf
(или, если хотите, вы можете использовать echo "$host"
вместо ).
В версии, доступной в Debian 10, параметр -u
будет обновлять кеш пакетов:
sudo add-apt-repository -u...
(Это не описано на справочной странице.)
Вы можете изменить значение по умолчанию, отредактировав/usr/bin/add-apt-repository
:изменить значение по умолчанию в
parser.add_option("-u", "--update", action="store_true",
dest="update", default=False,
help=_("Update package cache after adding"))
На основе ответа @Stephen Kitt,Я скопировал add-apt-repository
из Ubuntu bionic в свою стабильную версию Debian :
wget http://security.ubuntu.com/ubuntu/pool/main/s/software-properties/software-properties-common_0.96.24.32.14_all.deb
ar x software-properties-common_0.96.24.32.14_all.deb
tar xvf data.tar.xz
Чтобы отобразить разницу между двумя файлами, (подтвердите принятый ответ)
diff usr/bin/add-apt-repository /usr/bin/add-apt-repository
Замена существующего файла:
sudo mv usr/bin/add-apt-repository /usr/bin/add-apt-repository