LINUX.ORG.RU
решено ФорумAdmin

egrep через ssh EOF не массив?

 ,


0

1

$line содержит значения

#!/bin/bash
cd  /var/lib/git/
for $line in `egrep -r -l 123 data`; do
echo  Line: $line
done

При выполнени через ssh нет

#!/bin/bash
ssh -t variantb@c251.petav.ru << EOF
cd  /var/lib/git/
for $line in `egrep -r -l 123 data`; do
echo  Line: $line
done
EOF

★★★★★

а если так?

#!/bin/bash
ssh -t variantb@c251.petav.ru /bin/bash << EOF
cd  /var/lib/git/
for $line in `egrep -r -l 123 data`; do
echo  Line: $line
done
EOF

Kolins ★★★★★
()

При выполнени через ssh нет

Ты забыл экранировать, твои $... и бэктики исполняются на стороне хоста, с которого скрипт запущен.

Ну и переменная в for без $.

#!/usr/bin/env bash
ssh -t variantb@c251.petav.ru /bin/sh <<-EOF
  cd /var/lib/git
  for line in \$(egrep -r -l 123 data); do
    echo "Line: \${line}"
  done
EOF

Вот так должно работать.

mord0d ★★★★★
()
Последнее исправление: mord0d (всего исправлений: 1)
Ответ на: комментарий от mord0d

Правильно так:

ssh -t variantb@c251.petav.ru <<"EOF"

Кавычки вокруг терминатора here document заставляют шелл не раскрывать $… внутри.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Кавычки вокруг терминатора here document заставляют шелл не раскрывать $… внутри.

Это пока ему не понадобилось пробросить переменную внутрь.

Что-то типа такого:

#!/usr/bin/env bash
path=/var/lib/git
pattern="..."
ssh -t variantb@c251.petav.ru /bin/sh <<-EOF
  cd ${path}
  for line in \$(egrep -r -l ${pattern}); do
    echo "Line: \${line}"
  done
EOF
mord0d ★★★★★
()

На случай файликов с пробелами я бы порекомендовал как минимум установить IFS=$'\n' перед циклом for. Ещё правильнее было бы делать egrep ... --null | xargs -0 ... вместо цикла, но это же так сложно, что никто не осиливает такую мозговыносящую заумь.

legolegs ★★★★★
()

Немного не в тему, но...

$ echo 1 | egrep 1
egrep: warning: egrep is obsolescent; using grep -E
1

$ egrep --version
egrep: warning: egrep is obsolescent; using grep -E
grep (GNU grep) 3.11.0.20.dd8f
Copyright (C) 2023 Free Software Foundation, Inc.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.