터미널에서 fortran77 프로그램을 실행합니다.
./program
그리고 프로그램에는 입력 및 출력 파일이 필요합니다. 파일에 입력 및 출력 파일의 이름이 있는 경우(두 개의 열로 분할됨) 터미널에 무엇을 써야 합니까? 파일에 이름이 있는 모든 줄에서 이 프로그램을 실행하고 싶습니다.
아니면 - 매개변수와 같은 입력 정보를 사용하여 프로그램을 실행하는 방법은 무엇입니까?
아니면 스크립트에 직접 파일 이름을 어떻게 쓸 수 있나요? 바꾸다
READ(+,'(A)') OUT
답변1
다음과 같은 프로그램 파일을 만들었습니다.prog.f
program test
character IN*30,OUT*30,line*80
PRINT *,'Input file '
READ(*,'(A)') IN
OPEN(1,FILE=IN,STATUS='OLD')
PRINT *,'Output file?'
READ(*,'(A)') OUT
OPEN(2,FILE=OUT,STATUS='NEW',BLANK='ZERO')
read (1,'(a80)') line
write (2,*) "I read ", line
end
컴파일하고 링크하기
gfortran prog.f -o prog
입력 파일에 텍스트 문자열을 넣었습니다.
echo "Hello World" > in
in
out
그런 다음 프로그램에 입력 및 출력 파일의 이름을 보냅니다.
$ <<< 'in
out' ./prog
Input file
Output file?
그리고 출력 파일을 확인해보세요
$ cat out
I read Hello World
<<<
에서 작동합니다 . 더 휴대성이 좋은 파이프를 bash
선호할 수도 있습니다 .echo
$ rm out
rm: remove normal file 'out'? y
$ echo 'in
out' | ./prog
Input file
Output file?
$ cat out
I read Hello World
답변2
아마도 운이 좋다면
<infile ./program >outfile
작동합니다. 파일 설명자를 제공하도록 리디렉션합니다. 옵션/매개변수? ? ?
우리 지구인들이 그런 글을 쓰면...
$ <77in cat >77.out
$ cat 77in >77.out
77in
(이것은 에 복사되었습니다 77.out
.)
...이 Fortran77 프로그램/명령은 다음과 같이 되기를 원합니다.피연산자입력 파일/스트림에서 한 줄씩:
$ <77.io cat
77in
77.out
이제 cat
다른 것이면 첫 번째 줄을 입력 파일(예: "hello\nworld" 포함)로 구문 분석하고 두 번째 줄을 생성할 파일로 구문 분석합니다.
이것은 더 새롭고 간단한 방법인 것 같습니다...
cp -a dir1 dir2 dest
지금처럼 긴 매개변수 목록 대신 <in_list cpa77
.
하지만 modern과 같은 추가 파일이 필요합니다 cpio
.
<filelist cpio -o >files.cpio
. 물론 cpio
STDIN 라인만 필요합니다:
find . | cpio -o >files.cpio
( cpio
기능으로 인해 이 특수 호출 구문을 사용하면 많은 파일을 처리할 수 있습니다.주문 반. 동일 tar
하지만 다른 방식으로)
본질적으로 Unix의 특징 중 하나가 있다면 바로 셸의 명령에 제어 및 데이터를 제공할 수 있는 유연성입니다. 내가 말했듯이: 결국 좋은 Q입니다! (답변해주셔서 감사합니다!)