Мой код c-shell должен выполнить несколько параллельных фоновых заданий перед выполнением некоторых команд Unix. Однако каким-то образом в коде мои фоновые задания никогда не возвращают дескриптор Unix-команд.
т.е.
$cmd1 | tee $XD/m1.log&
$cmd2 | tee $XD/m2.log&
$cmd3 | tee $XD/m3.log&
$cmd4 | tee $XD/m4.log&
Все 4 упомянутые выше команды генерируют 4 разных файла с именами $L1
, $L2
, $L3
и $L4
(пример: setenv L1 $XD/div.txt
и т. Д.). Мне нужно объединить все эти файлы после удаления из них первой строки, поэтому я использовал следующую логику. Но похоже, что команда sed никогда не выполняется
wait $!
echo "Job completed"
sed -i '1d' $L2
sed -i '1d' $L3
sed -i '1d' $L4
cat $L1 $L2 $L3 $L4 >> $L
Не могли бы вы помочь мне сделать, а затем выполнять пост фоновые задания?
попробовал
if (! -e $L4 ) then
if ( -f $L4 ) then
wait $!
echo "Job completed"
sed -i '1d' $L2
sed -i '1d' $L3
sed -i '1d' $L4
cat $L1 $L2 $L3 $L4 >> $L
endif
endif
но тоже не помогло.
$cmd1 | tee $XD/m1.log&
$cmd2 | tee $XD/m2.log&
$cmd3 | tee $XD/m3.log&
$cmd4 | tee $XD/m4.log&
if (! -e $L4 ) then
if ( -f $L4 ) then
wait $!
echo "Job completed"
sed -i '1d' $L2
sed -i '1d' $L3
sed -i '1d' $L4
cat $L1 $L2 $L3 $L4 >> $L
endif
endif
Ожидаемым результатом будет создание файла $L
($XD/final.txt
), что произойдет только тогда, когда скрипт вернется во 2-ю половину раздела, содержащего команду sed.