안녕하세요 여러분 저는 프로그램을 작성해야 합니다.. 정말 간결하게 설명하겠습니다... 그리고 모자는 이미 완료했고 무엇을 해야 하는지...
간단히 말해서 Bash에서 학생들의 연습 문제를 실행하고 그것이 올바른지 확인하는 "시뮬레이터"를 수행해야 합니다. 각 연습에 대해 점수를 계산하고 학생이 시험에 합격했는지 여부를 말해야 합니다.
거의 모든 작업을 수행했습니다... 작성해야 할 코드 몇 줄이 누락된 것 같습니다.. 하지만 이것이 가장 중요하다고 생각합니다... :(
내 스크립트는 TEST.SH이고 학생의 연습을 실행해야 합니다. 연습은 ELABORATO.SH 스크립트입니다... 이제 몇 가지 시나리오를 가질 수 있습니다.
- ELABORATO.SH는 입력에서 일부 값을 매개변수로 기다립니다.
- ELABORATO.SH는 표준 입력, 키보드 입력을 기다립니다.
- ELABORATO.SH는 파일/fifo/etc에 출력을 씁니다. ;
첫 번째 점은 해결하기가 정말 간단합니다. 실제로 TEST.SH에서
ELABORATO.SH
다음과 같이 호출합니다.. ELABORATO.SH param1 param2 param3;
두 번째, 세 번째는 더 복잡하네요..
파일에서 문자열을 읽어야 하고(괜찮습니다) 이 문자열을
ELABORATO.SH
stdin의 문자열처럼 전달해야 합니다.... 의 출력으로 파일을 생성해야 합니다
ELABORATO.SH
. 예를 들어ELABORATO.SH
파일을 생성하는 경우(출력 파일의 이름을 모릅니다) 다른 디렉터리에도 파일을 생성해야 합니다. 어떻게 할 수 있습니까? 그래요?
답변1
이것은 숙제처럼 의심스럽게 들리지만*, 시작합니다.
왜 스크립트를 소싱하겠습니까
ELABORATO.SH
? 그렇게 하고exit
명령문이나 오류가 있는 경우에도TEST.SH
마찬가지입니다. 나는 그것이 당신이 원하는 것이라고 생각하지 않습니다. 그냥 스크립트를 실행하겠습니다.bash ELABORATO.SH param1 param2
입력을 리디렉션하는 것에 대해 생각해 보셨나요?
bash ELABORATO.SH param1 param2 < INPUT_FILE
의 출력을 캡처하려면
ELABORATO.SH
리디렉션이 아닌 것 같습니다.만들어진그에 대한?bash ELABORATO.SH param1 param2 < INPUT_FILE > OUTPUT_FILE
어떤 파일이 작성되는지 알아내는 ELABORATO.SH
것은 쉽지 않습니다. (부담: 출력 파일을 모른다면 의 점수를 계산하는 데 어떻게 관련이 있을 수 있습니까 ELABORATO.SH
? 왜 굳이 옮겨야 합니까?)
어쨌든, 간다. 다음 파이프라인은 다음에 의해 생성된 파일을 나열합니다 ELABORATO.SH
.
strace bash ELABORATO.SH params < INPUT_FILE 2>&1 > OUTPUT_FILE \
| grep '^open(.*O_CREAT' | cut -d\" -f 2
그런 다음 다른 곳으로 옮기려면 다음을 수행하십시오.
for f in $(
strace bash ELABORATO.SH params < INPUT_FILE 2>&1 > OUTPUT_FILE
| grep '^open(.*O_CREAT' | cut -d\" -f 2)
do
mv "$f" /path/to/elsewhere
done
*) AskUbuntu의 친절한 사람들을 감독자에게 추천해주세요.