C 쉘:프로그램을 실행하는 방법으로 비 command line arguments?
문제
내$포탄은 tcsh.나를 실행하려 c 쉘 스크립트를 호출하는 프로그램에 많은 시간과 함께 인수가 변경되었습니다.프로그램을 호출해야에서 Fortran.내가 원하지 않는게 편집할 수 있습니다.프로그램만 인수 한 그것은 실행되지만,on the command line.에 따라 프로그램을 호출하는 스크립트에서 제어 프로그램(이 나 있는 곳에 붙어 현재 저는 얻을 수 없기 때문에 스크립트를 실행하지 않을 때까지 아무것도 후 프로그램 프로세스가 중지되);이 시점에서 필요해요 그것을 전달하는 몇 가지 변수가,그 후 여러 가지 반복세요 ctrl+c 프로그램을 계속으로 스크립트입니다.
어떻게 할 수 있습니까?
해결책
를 추가하이 무엇@Toybuilder 말했다,사용할 수 있습니다"여기에 문서".I.e.스크립트 수
./myfortranprogram << EOF
first line of input
second line of input
EOF
사이에 있는 모든"<<EOF
"및"EOF
"먹일 것이다 프로그램이 표준입력(가 프로그램은 여전히"사용 읽기(5,*)"표준입력에서 읽?)
고 생각하기 때문에@ephemient 의 의견 할 가치에 대한 답변:
좀 더 도움말:<<'EOF'방지 보간에 여기에 문서 본체;<<-EOF 모두 제거한 최고의 탭(도 할 수 있습 들여쓰기 닥치 실),및 수 있습 EOF 에 의해 대체합니다.빈 토큰 (<<"")을 나타냅니다 여기-doc 는 중 처음에 빈 라인입니다.
나는 확실하지 않는 방법 휴대용 그 사람은 경우,또는 그들은 단지 tcsh 확장자-난 단지 사용 <<EOF
유형"여기에 문서"자신입니다.
다른 팁
당신이 사용하고 싶은 것은입니다 예상하다.
음, 리디렉션으로 Fortran 코드를 공급할 수 있습니까? 입력으로 임시 파일을 작성한 다음 Stdin 리디렉션 (<)으로 파이프로 파이프 할 수 있습니다.
아니에요 tcsh
사용자이지만 프로그램이 실행되면 stdin
그런 다음 쉘 리디렉션을 사용할 수 있습니다 <
필요한 명령을 공급하기 위해. 배경으로 실행하면 &
실행되면 차단하지 않습니다. 그럼 당신은 할 수 있습니다 sleep
조금도, 당신이 가진 도구를 사용하십시오 (ps
, grep
, awk
, 등) 프로그램의 PID를 발견 한 다음 사용하십시오. kill
보내기 위해 SIGTERM
Ctrl-C를 수행하는 것과 동일합니다.
이것은 UNIX 프로그램 기대의 직업이며, 이는 대화식 프로그램을 훌륭하고 쉽게 지휘하고 프롬프트에 대응할 수 있습니다.
나는 내 질문 이이 질문의 복제에 가깝다고 들었을 때 여기로 보내졌다.
fwiw, 나는 CSH C 쉘 스크립트와 비슷한 문제가있었습니다.
이 코드는 Custom_Command가 입력 인수를 얻지 않고 실행할 수있게했습니다.
foreach f ($forecastTimes)
custom_command << EOF
arg1=x$f;2
arg2=ya
arg3=z,z$f
run
exit
EOF
end
처음 시도했을 때는 작동하지 않았지만 코드의 해당 섹션에서 모든 공백을 백 스페이스 한 후 "<<"과 "eof"사이의 공간을 제거했습니다. 또한 왼쪽 마진까지 "EOF"를 끝까지 닫았습니다. 그 후 그것은 효과가있었습니다.
foreach f ($forecastTimes)
custom_command <<EOF
arg1=x$f;2
arg2=ya
arg3=z,z$f
run
exit
EOF
end