별칭의 매개변수를 한 번 사용한 후에는 어떻게 되나요? [복사]

별칭의 매개변수를 한 번 사용한 후에는 어떻게 되나요? [복사]

왜 이것은 arg한 번만 인쇄됩니까?

$ alias test="echo $1 $1 $1"
$ test arg
arg

이는 GNU bash 버전 4.2.25(1) 릴리스(x86_64-pc-linux-gnu)에 있습니다.

답변1

alias별칭을 정의한 후 명령을 사용하여 별칭을 나열하면 이를 명확하게 이해할 수 있습니다.

alias test="echo $1 $1 $1"
alias

산출:

alias test='echo   '

단지 실행 시 정의된 변수만 포함하는 문자열로 확장됩니다. 예를 들어 다음은 작동합니다(Vvariable MY_VAR이 정의됨).

MY_VAR="foo"
alias test="echo $MY_VAR $MY_VAR $MY_VAR"
alias

산출:

alias test='echo  foo foo foo'

기능으로 대체할 수 있습니다.

function test() {
    echo $1 $1 $1
}

답변2

$1, $2,... 도움이 되는지 의심스럽습니다 alias. 이에 대해서는 침묵합니다.

test arg따라서 귀하의 명령은 으로 확장되었다고 생각합니다 echo $1 $1 $1 arg. $1이 비어 있으면 결과를 얻을 수 있습니다.

또 다른 예를 들어보세요:

$ alias test='echo $1 $1 $1'
$ test arg1 arg2
arg1 arg2

위의 예에서는 alias test=...get이 실행되고 최종 효과는 command 의 별칭을 얻는 것입니다 echo. 명령을 실행하여 이 효과를 확인할 수 있습니다 test arg1 arg2. 우리가 하는 일은 실행 echo하고 문자열 arg1sum 을 전달하는 것뿐입니다 arg2.

$ echo arg1 arg2

관련 정보