디렉토리 경로에서 변수를 사용할 때 어떻게 공백을 제거 할 수 있습니까? 예를 들어 , 나는디렉토리 경로의 Bash 변수 공간
alias test='echo /david/$1'
을 할 노력하고있어 나는
test hhh
을하려고 할 때이 변수 앞에 공백으로
/david/ hhh
을 생산하고 있습니다. 그것은 매우 간단 해 보이지만 해결책을 찾을 수 없습니다.
디렉토리 경로에서 변수를 사용할 때 어떻게 공백을 제거 할 수 있습니까? 예를 들어 , 나는디렉토리 경로의 Bash 변수 공간
alias test='echo /david/$1'
을 할 노력하고있어 나는
test hhh
을하려고 할 때이 변수 앞에 공백으로
/david/ hhh
을 생산하고 있습니다. 그것은 매우 간단 해 보이지만 해결책을 찾을 수 없습니다.
alias
매개 변수 확장을 수행하지 않습니다. 조금도. 함수를 대신 사용하십시오.
test(){
echo "/david/$1"
}
사람 bash는 :
는 (그렇지 않으면 인수는대체 텍스트에서 인수를 사용하는 메커니즘이 없습니다. 인수가 필요한 경우 셸 함수를 사용해야합니다 (아래 함수 참조). [...] 거의 모든 목적을 위해 별명은 쉘 기능으로 대체됩니다. 공간이 확장 된 문자열의 끝에 추가됩니다 별칭 확장의 일환으로
alias ll='ls -l'
처럼 추가 할 수 없었다. 그래서
ll -a
가 잘못 될 것이라고
ls -l-a
로 확장 될 것이다). 그래서 난이 문제에 아무런 해결책을 찾지 못했고 그 다음에는
Ignacio 제안 된 기능을 사용했습니다.
어쨌든 bash 기본 제공 명령 (별칭이 지정되지 않았거나 함수로 명명되지 않은 경우)이므로 함수 또는 별칭으로 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
감사합니다,이 내 질문을 더욱 명확하게 :) –
가 더 명시하기 빈,'echo/david/hhh'를 보내고 있습니다 –
고마워요! :)하지만 별칭 (내 .bashrc)을 사용하려면 해당 함수를 지정해야합니까? 내가 찾고 있던 것은'alias = 'command/path-with-variable ...'와 같은 것이다. 해당 함수를 별칭 사양에 넣는 방법이 있습니까? –
mmm 방금'alias' 대신 함수를 사용했고 명령이 작동합니다. –