2014-05-21 7 views
1
이 같은 스크립트를 가지고

, 내가 $1=test.tex 경우, 다음 ${1%.tex}.asytest-1.asy 될 것입니다 알고 있지만 1%. 여기 무슨 뜻

latex $1 
asy ${1%.tex}.asy 

? ${1%.tex}.asytest.asy이되도록하려면 어떻게해야합니까?

+0

'$ 1'은 런타임에 쉘 스크립트에 전달 된 첫 번째 위치 변수입니다. '% .tex'는 뒤에서 가장 짧게 일치하는'.tex'를 제거합니다. 나는 당신이 위에서 보여준 것에서'test-1.asy' 결과물을 어떻게 얻었는지 잘 모르겠습니다. 원하는 출력을 얻을 수 있어야합니다. –

+0

감사! 나는'test-1.asy '를 얻은 이유가 제 소프트웨어 구성과 관련이 있다고 생각합니다. –

답변

4

:

$ {매개 변수 % 단어}

$ {매개 변수 %% 단어}

단어는 파일 이름 확장에서 같은 패턴을 생성하기 위해 확장된다. 패턴이 매개 변수의 확장 된 값의 후행 부분과 일치하면 확장 결과는 가장 짧은 패턴 (% 경우) 또는 가장 길게 일치하는 패턴 (%% 경우)이 삭제 된 매개 변수의 값입니다. 매개 변수가 @ 또는 *이면 패턴 제거 작업이 각 위치 매개 변수에 차례로 적용되고 확장은 결과 목록입니다. 매개 변수가 @ 또는 *으로 아래 첨자 된 배열 변수 인 경우 패턴 제거 작업이 배열의 각 멤버에 차례로 적용되고 확장은 결과 목록입니다. $1text.tex로 확장하는 경우

그럼 ${1%.tex}text로 확장됩니다.

+0

정확히 내가 원하는 것, 감사합니다! –

2

당신은 스크립트에 인수를 제공 할 수있는, 예컨대 :

myscript one two three 

는 그 인수는 위치 매개 변수 $1, $2$3에 할당됩니다. 위의 예에서, $1는 코드 ${1%.tex}.asy 그냥 변수 $1에서 작동 등 twoone$2에 할당 할 것이다 : 그것은 제거 접미사 .tex로 문자열을 반환하고 .asy로 교체. Bash Reference Manual에서

+0

감사합니다. 도움이됩니다. –

관련 문제