как спать в раковине? - PullRequest
       16

как спать в раковине?

1 голос
/ 01 июня 2019

когда я тестирую свой шелл-код, я обнаруживаю, что что-то запутано

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 &". И я сломаю время?

...