Судя по тому, что вы описываете, похоже, что в PROCESS2 есть что-то принципиально неправильное, из-за чего он завершается. Если я смоделирую то, что вы описываете, с помощью 3 процессов, это в основном будет работать так, как и следовало ожидать, когда вы создаете фон для 3 процессов, а затем захватываете и передаете PID 2-го процесса процессу 3.
$ cat runny.bash
#!/bin/bash
proc3func() {
echo $1
sleep 7 &
}
sleep 9 &
sleep 8 &
PID2=$!
proc3func ${PID2} &
пример запуска $./runny.bash ; sleep 2; ps -eaf
4279
UID PID PPID C STIME TTY TIME CMD
...
vagrant 4278 1 0 20:21 pts/1 00:00:00 sleep 9
vagrant 4279 1 0 20:21 pts/1 00:00:00 sleep 8
vagrant 4282 1 0 20:21 pts/1 00:00:00 sleep 7
В приведенном выше выводе мы видим PID, 4279, отображаемый на экране, за которым следует вывод ps -eaf
, который показывает наши 3 процесса.
Я бы посоветовал включить set -x
, чтобы вы могли следить за тем, какие команды выполняются при запуске скрипта или при его запуске вот так:
$ bash -x./runny.bash
+ PID2=4612
+ sleep 9
+ sleep 8
+ proc3func 4612
+ echo 4612
4612
+ sleep 7
С помощью zsh
, чтобы переместить все файлы test_n_part*/*
вtest_n
:
autoload zmv
mkmv() {mkdir -p -- $2:h && mv -- "$@"}
zmv -n -P mkmv '(test_<->)_part*/(*)' '$1/$2'
(снять -n
для работы всухую -если все устраивает ).
Добавьте (#qD)
к исходному паттерну, чтобы также перемещать скрытые файлы.