У меня есть сценарий оболочки 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**
Существует ли способ скопировать файлы? Поточная обработка, возможно..
Попробуйте это,
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
Объяснение:
abc.sh
с {
или (
echo
a, b или cabc.sh
созданный временный файл/tmp
и переместите или скопируйте его в место назначения.}
или )
timeout
автоматически уничтожить abc.sh
после перемещения файла