2012-12-03 4 views
0

다른 환경에서 스크립트를 실행하고 있으므로 변수의 시작 경로와 이름을 변수 $CreateSequenceDictionary에 저장합니다.따옴표로 묶인 차이 변수 (명령 내부)

이 프로그램은 매개 변수 R=O=을 사용하기 때문에 전체 명령을 따옴표 ""로 묶습니다. 이 기능이 없으면 프로그램이 매개 변수없이 시작됩니다.

이제 내 문제 : $reference 대신이 변수의 내용을 전달하고 싶습니다. 성공하지 (예 :`` ""평가 후면 \ 등)

"java -jar $CreateSequenceDictionary R=$reference O=output" >mlogfile 

많은 변화 :이 시도.

매개 변수가 변수에 저장된 변수에 저장된 프로그램을 실행할 수 있도록 명령을 어떻게 조정해야합니까?

편집 : 나는 터미널에서 명령을 사용해야한다면 다음과 같을 것이다 :

java -jar /path/CreateSequenceDictionary.jar R=input O=output 

는 그러나, 나는 변수에서 프로그램의 이름을 가져도 변수에서 입력 파일의 이름을 지정합니다.

+0

어떻게 작동하나요? 당신은'$ reference'라는 이름의 변수를 가지고 있고'R '을 가지고 같은 변수를 별명으로 쓰고 싶습니까? 점은 무엇인가? – Raffaele

+0

아니요, 일반적으로 명령은 다음과 같습니다. java -jar /path/CreateSequenceDictionary.jar R = input O = output이고 변수에서 프로그램 이름을 가져오고 변수에서 입력 파일의 이름을 가져 오려고합니다 (이 입력 파일은 다음 중 하나입니다. 매개 변수 프로그램 CreateSequenceDictionary.jar 필요) – Perlnika

답변

2

주위 인용 부호 없이도 가능합니다.

배시는 명령을 실행하기 전에 바를 확장합니다. 이 즉석에서 추가 인수를 구축하고 관련 *_option 변수가 비어있는 경우 그 건너 뛰고

CreateSequenceDictionary="your_Program" 
r_option ="$reference" 
o_option="output" 

arguments=() 
[[ "$r_option" ]] && arguments+=("$r_option") 
[[ "$o_option" ]] && arguments+=("$o_option") 

java -jar $CreateSequenceDictionary "${arguments[@]}" > mlogfile 

:

당신이 조건부로 R=O= 옵션을 포함 할 경우

, 당신은 이런 식으로 뭔가를 시도 할 수 .

+0

옵션 값을 공백으로 보호하려면 배열을 사용하십시오 :'arguments =(); [[ "$ r_option"]] && arguments + = ("$ r_option"); ...; java ... "$ {arguments [@]}"... "- 대개 시스템 변수 나 환경 변수를 덮어 쓰지 않도록 대문자 변수 이름을 사용하지 않는 것이 좋습니다. –

+0

큰 제안! 업데이트 됨. 많은 글렌 감사합니다. –

+0

매개 변수를 추가하는 방법을 시도해 보겠습니다. 그러나 주위 따옴표가 없으면 매개 변수없이 프로그램이 시작됩니다. "오류 : 옵션 'OUTPUT'이 필요합니다." – Perlnika