Нуждаюсь в помощи для копирования содержания временного файла, созданного другим сценарием оболочки в рамках сценария оболочки

У меня есть сценарий оболочки test.sh.

В этом я пытаюсь выполнить другой сценарий оболочки abc.sh. Когда abc.sh выполняется это берет в одной из опций a, b, c. Если я выбираю a и нажимаю Enter, он создает временный файл и открывает его и если я даю q, он выходит с экрана и удаляет временный файл.

Но когда я звоню test.sh, это звонит abc.sh и временный файл открыт.

Я хочу скопировать временный файл для размещения dir, созданного abc.sh, нажмите q так, чтобы он вышел из сценария и продолжил test.sh.

Ограничение, мне не разрешают изменить abc.sh.

abc.sh имеет логику для создания временного файла и на завершении т.е. если я нажал q клавишу, и это выходит из сценария из него и удаляет временный файл также.

Я застреваю в этой точке в test.sh

echo a | /home/amy/abc.sh

Кто-то может помочь мне с этой проблемой?

Вот вывод с моего экрана, где он создает временный файл

+++++++++++++++++++++++++++++++++++++++++++++++++++

S1012852TB00N020405000000wwww6800001PB084Kpb474F7ED028BE71024744F07FC1EEECA667E511581D7AF6AD84E08B0040665415D32CC5ECCC900641
**/tmp/xxyyzz.2578098**

Существует ли способ скопировать файлы? Поточная обработка, возможно..

1
задан 21 August 2018 в 11:58

1 ответ

Попробуйте это,

ref_file=$(mktemp)
{
  echo a
  sleep 1
  find /tmp -maxdepth 1 -type f -newer $ref_file -exec cp "{}" ~ \; 2> >(grep -v 'Permission denied' >&2)
} | timeout 2 ./abc.sh
rm $ref_file

Вы сказали abc.sh создает файл спама в "регионе", Вы выполняете его.
Удалите его с помощью чего-то вроде этого (помещенный прежде rm $ref_file).

find . -maxdepth 1 -type f -newer $ref_file -rm

Объяснение:

  1. Создайте ссылочный файл
  2. Породите последовательность сценария или подоболочку, которая передает по каналу к abc.sh с { или (
  3. echo a, b или c
  4. Ожидайте до abc.sh созданный временный файл
  5. Найдите файлы более новыми, чем ссылочный файл в /tmp и переместите или скопируйте его в место назначения.
  6. Закройте последовательность сценария / подоболочка с }или )
  7. Канал к abc.sh, использовать timeout автоматически уничтожить abc.sh после перемещения файла
  8. Удалите ссылочный файл.
0
ответ дан 7 December 2019 в 23:43

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

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