저는 Python과 C에서 여러 번 실행해야 하는 여러 코드 조각을 만들었습니다. 각 코드는 새로운 입력 값 세트를 사용하여 실행됩니다. 이를 위해 다양한 입력량에 대해 다양한 프로그램을 실행하는 Unix 쉘 스크립트를 만들었습니다.
#!/bin/sh
_file="${1:-/dev/null}"
while IFS=' ' read -r f1 f2 f3 f4
do
cd folder1
cd folder2
echo "$f1 $f2 $f3 $f4 " > inputs.txt
mpiexec -n 4 a_C_code
cd ..
cd ..
python3 python_code_1.py
python python_code_2.py
python python_code_3.py
python python_code_4.py
echo "$f1" #So I know how many times the loops has been performed
done < "$_file"
스크립트로 읽어들이는 파일의 형식은 다음과 같습니다.
1 2 3 4
5 6 7 8
...
그러나 프로그램을 실행하면 첫 번째 입력 세트(이 경우 1 2 3 4)만 반복하고 다른 다양한 입력 그룹에 대해서는 프로그램을 실행하지 않고 완료됩니다.
답변1
셸 코드는 괜찮아 보이고 단순화된 텍스트 버전은 예상대로 작동합니다.
seq 12 | paste - - - - |
while IFS=' ' read -r f1 f2 f3 f4 ; do
echo "$f1 $f2 $f3 $f4 "
done
산출:
1 2 3 4
5 6 7 8
9 10 11 12
그래서강철 드라이버의 코멘트이는 사실일 수 있으며 프로그램 mpiexec
이나 프로그램 중 하나가 python
나머지 입력 줄을 소비하므로 echo
두 번째 입력 줄에 도달하지 못합니다.
예를 들어, 배고픈 명령 세트가 추가된 위의 코드를 고려해보세요.
seq 12 | paste - - - - |
while IFS=' ' read -r f1 f2 f3 f4 ; do
echo "$f1 $f2 $f3 $f4 "
(read x; read x; read x;)
done
출력(누락된 줄 참고):
1 2 3 4