2013-06-14 2 views
1

디렉토리 경로에서 변수를 사용할 때 어떻게 공백을 제거 할 수 있습니까? 예를 들어 , 나는디렉토리 경로의 Bash 변수 공간

alias test='echo /david/$1' 

을 할 노력하고있어 나는

test hhh 

을하려고 할 때이 변수 앞에 공백으로

/david/ hhh 

을 생산하고 있습니다. 그것은 매우 간단 해 보이지만 해결책을 찾을 수 없습니다.

답변

6

alias 매개 변수 확장을 수행하지 않습니다. 조금도. 함수를 대신 사용하십시오.

test(){ 
    echo "/david/$1" 
} 
+4

가 더 명시하기 빈,'echo/david/hhh'를 보내고 있습니다 –

+0

고마워요! :)하지만 별칭 (내 .bashrc)을 사용하려면 해당 함수를 지정해야합니까? 내가 찾고 있던 것은'alias = 'command/path-with-variable ...'와 같은 것이다. 해당 함수를 별칭 사양에 넣는 방법이 있습니까? –

+1

mmm 방금'alias' 대신 함수를 사용했고 명령이 작동합니다. –

1

사람 는 :

대체 텍스트에서 인수를 사용하는 메커니즘이 없습니다. 인수가 필요한 경우 셸 함수를 사용해야합니다 (아래 함수 참조). [...] 거의 모든 목적을 위해 별명은 쉘 기능으로 대체됩니다. 공간이 확장 된 문자열의 끝에 추가됩니다 별칭 확장의 일환으로

는 (그렇지 않으면 인수는 alias ll='ls -l'처럼 추가 할 수 없었다. 그래서 ll -a가 잘못 될 것이라고 ls -l-a로 확장 될 것이다). 그래서 난이 문제에 아무런 해결책을 찾지 못했고 그 다음에는 Ignacio 제안 된 기능을 사용했습니다.

어쨌든 기본 제공 명령 (별칭이 지정되지 않았거나 함수로 명명되지 않은 경우)이므로 함수 또는 별칭으로 test을 사용하는 것이 가장 좋은 방법은 아닙니다. type bash 내장 기능을 사용하여 니모닉이 어떻게 해석되는지 확인할 수 있습니다.

나는 별칭을 정의하는 기능 test 전화 : 당신이 테스트 hhh`, 당신은 정말 에코 데이비드는/$ (1) hhh`, 때문에 $ 1 인 /`보내는`입력 할 때

$ type test 
type test 
test is aliased to `echo /xxx/' 

$ type -a test 
type -a test 
test is aliased to `echo /xxx/' 
test is a function 
test() 
{ 
    echo "/yyy/$1" 
} 
test is a shell builtin 
test is /usr/bin/test 
+0

감사합니다,이 내 질문을 더욱 명확하게 :) –