когда я тестирую свой шелл-код, я обнаруживаю, что что-то запутано
tasklist.txt содержит текст:
1
2
3
и мой код оболочки (shell.sh):
#! /bin/bash
cat tasklist.txt | while read lines
do
echo $lines
cd /media/ice/0A9AD66165F33762/magnet_data/2019/修改
alpha/changeAlpha/runInMyComputer/80K/alpha0.01/50fs/80_1200
mpirun -np 1 ./bin/ASDMPI cff &
done
echo "end..............."
печатает:
1
2
3
это правильно!
но когда я изменяю код на:
#! /bin/bash
cat tasklist.txt | while read lines
do
echo $lines
cd /media/ice/0A9AD66165F33762/magnet_data/2019/修改
alpha/changeAlpha/runInMyComputer/80K/alpha0.01/50fs/80_1200
mpirun -np 1 ./bin/ASDMPI cff &
sleep 1
done
echo "end..............."
он просто печатает:
1
почему результат отличается, когда я добавляю код: sleep 1
?
моя ОС - Ubuntu18.04
=============================================== ======
добавление контента:
oldIFS=$IFS;
IFS=$'\n';
for line in $(cat tasklist.txt )
do
echo $line
nohup mpirun -np 1 ./bin/ASDMPI cff &
sleep 1
done
kill -9 $(pgrep ASDMPI)
выход:
1
nohup: appending output to 'nohup.out'
2
nohup: appending output to 'nohup.out'
3
nohup: appending output to 'nohup.out'
но
cat tasklist.txt | while read line
do
echo $line
nohup mpirun -np 1 ./bin/ASDMPI cff &
sleep 1
done
kill -9 $(pgrep ASDMPI)
выход:
1
nohup: appending output to 'nohup.out'
моя "nohup mpirun -np 1 ./bin/ASDMPI cff &" может быть особенной, если вы измените "nohup mpirun -np 1 ./bin/ASDMPI cff &" на другую команду, она будет отображаться правильно.
но я не знаю, что за ошибка с "nohup mpirun -np 1 ./bin/ASDMPI cff &". И я сломаю время?