2017-01-26 3 views
0

실행 파일을 두 개 입력하는 실행 파일 (Something.exe)이 있습니다.Unix/Linux의 터미널에서 .EXE를 실행하는 방법은 무엇입니까?

My-MacBook:Folder my$ ./Something.exe 
    Enter first input: someimage.tif 
    Enter second input: x y z coordinates 
    123 456 23.00000 24.0000 59.345 

내가 프로그램을 실행하고 메시지가 다음 프로그램이 결과를 제공 할 때 별도로 두 개의 입력을 입력 예를 들어이 이런 일을 수행합니다. 그러나

, 내가 의미 한 줄에 전체 프로세스를 입력 할 수있는 방법 : 나는 터미널에 한 줄에서이 작업을 수행하려면 어떻게

My-MacBook:Folder my$ ./Something.exe someimage.tif x y z coordinates 
    123 456 23.00000 24.0000 59.345 

을 그래서 입력에 입력 할 필요가 없습니다 메시지가 나타나면? 프로그램 코드에서 조정해야 할 것이 있습니까? 프로그램이 단지 표준 입력에서 읽고있는 경우이 프로그램은 90

+1

봐 "점점 인수"당신은 프로그램 ... https://genomeek.wordpress.com/2012/02/09/fortran-command-line-argum을 조정할하려는 경우 ents/ –

+0

@ Mark Setchell 감사합니다! 나는 이것을 점검 할 것이다. – Guest

+0

같은 이미지이지만 좌표가 다른 프로그램을 여러 번 실행하고 싶습니까? 어쩌면 당신이 원했던 대답을 가지고 있다면 당신이 달릴 첫 3 가지 명령을 보여줄 수 있습니다 ... –

답변

0

포트란으로 작성된 것입니다, 당신은 단순히

printf '%s\n%s\n' 'someimage.tif' 'x y z coordinates' | ./Something.exe 

을하거나 할 수 사용하고있는 쉘은 bash는 경우 :

echo $'someimage.tif\nx y z coordinates' | ./Something.exe 
+0

안녕하세요! printf가 작동했습니다. 고맙습니다!! 큰 문제가 아니라면 '% s \ n % s \ n'에 대해 설명해주십시오. – Guest

+1

@Guest 명령에 대해서는 ['man 1 printf'] (http://man7.org/linux/man-pages/man1/printf.1.html)을 참조하십시오. ['man 3 printf'] (http : // man7.org/linux/man-pages/man3/printf.3.html)에서 형식 문자열을 찾습니다. 기본적으로 첫 번째 인수는 출력의 형식을 지정하는 방법을 설명하는 문자열입니다. '% s'은 "문자열을 사용하여 다음 인수를 출력합니다"; '\ n'은 "줄 바꿈을 출력합니다"(줄 바꿈)를 의미합니다. – melpomene

0

명령 행 인수를 대화식 명령 행 프로그램으로 푸는 고전적인 방법 중 하나는 expect 스크립트를 사용하는 것입니다. 귀하의 예를 exe를 들어, 여기에 작동합니다 스크립트를 기대할 수 있습니다 : 파일에

#!/usr/bin/env expect 
set tif [lindex $argv 0] 
set x [lindex $argv 1] 
set y [lindex $argv 2] 
set z [lindex $argv 3] 
set coords "$x $y $z" 
spawn ./Something.exe 
match_max 100000 
expect "first input:" 
send -- $tif 
send -- "\r" 
expect "second input:" 
send -- $coords 
send -- "\r" 
expect eof 

쓰기이, 말, automate.exp, 그것을 실행하기를, 다음처럼 실행

./automate.exp someimage.tif xcoord ycoord zcoord 
0

이럴 , 가장 쉬운 방법은 "쉘 래퍼 넣기" 주위에 Something.exe입니다. 이제

chmod +x GoBaby 

: 다음

#!/bin/bash 
################################################################################ 
# GoBaby 
# Wrapper around Something.exe, to be used as: 
# 
# ./GoBaby image.tif "x y z" 
################################################################################ 
# Pick up the two parameters we were called with 
image=$1 
xyz=$2 
# Send the parameters into Something.exe 
{ echo "$image"; echo "$xyz"; } | ./Something.exe 

, 당신은 래퍼 스크립트 실행 (단지 필요 하나 시간)합니다 GoBaby으로 우리는 다음과 같은 저장 것의 우리가 새로운 명령을 GoBaby되고 싶어한다고 가정 해 봅시다 당신은 실행할 수 있습니다

./GoBaby image.tif "x y z" 
관련 문제