жемчуг один лайнер + печатает ЗНАЧЕНИЕ в конце строки

Нет встроенного пути в ssh сделать это, кроме использовать перенаправление портов.

Однако существует путь, который работает обоснованно хорошо - ProxyCommand установка для ssh. Можно указать это на основе на хост в ~/.ssh/config и используйте его для определения команды для выполнения для соединения с удаленным ssh портом.

Я использую это на нескольких хостах:

host serverB.example.com serverB
  ProxyCommand /usr/bin/ssh serverA.example.com /usr/bin/nc %h %p

Посмотрите ssh(1) страница руководства для получения дополнительной информации и nc(1) от netcat пакет для команды я использую для передачи на соединении. (Можно использовать что-либо, что делает соединение TCP и передает стандартный ввод и вывод через него, все же.)

0
17.03.2013, 15:40
2 ответа
perl -F= -lane '$v{$F[0]}=$F[1]; if ($F[0] eq "DATE") {$v{CURRENT_VERSION} eq $v{NEW_VERSION} ? print $v{NEW_VERSION}, " ", $v{DATE} : exit(1)}'

Или, все еще острота, но читаемый

perl -F= -lane '
    $v{$F[0]} = $F[1];
    if ($F[0] eq "DATE") {
        $v{CURRENT_VERSION} eq $v{NEW_VERSION} 
            ? print $v{NEW_VERSION}, " ", $v{DATE} 
            : exit(1)
    }' << END
CURRENT_VERSION=223.3.12.4.5.3
NEW_VERSION=223.3.12.4.5.3
DATE=17.3.2013
END

выводы

223.3.12.4.5.3 17.3.2013
1
28.01.2020, 02:53

Это должно работать:

echo $CURRENT_VERSION | \
    perl -e '($nv,$d)=(shift,shift); /\Q$nv/ and chomp,print "$_ $d\n" while <>' $NEW_VERSION $DATE

Однако могло бы быть лучше включать $CURRENT_VERSION как один из параметров также:

perl -e '($nv,$d,$cv)=@ARGV; $cv=~/\Q$nv/ and print "$cv $d\n"' $NEW_VERSION $DATE $CURRENT_VERSION
0
28.01.2020, 02:53
  • 1
    что относительно "Q$STR\E", я не вижу \E в Вашем синтаксисе? –  yael 17.03.2013, 14:58
  • 2
    @yael: Если нет ничего после \E, Вы можете ommit это. –  choroba 17.03.2013, 15:09

Теги

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