함수의 모든 매개변수를 한 줄에 붙여넣는 방법이 있나요?

함수의 모든 매개변수를 한 줄에 붙여넣는 방법이 있나요?

나는 그것을 정기적으로 사용하기 .bashrc때문에 지금 이것을 가지고 있습니다 . with 와 같이 옵션으로 전달될 수 있는 다른 항목을 읽을 수 있기를 원합니다 . 내가 이걸 어떻게 할 수 있지?git statusgit diff-sgit diff기능하나보다는별명? $#전달된 매개변수의 수를 알 수 있다는 것은 알지만 , status48행 뒤에 매개변수를 모두 붙여넣으려면 어떻게 해야 합니까?

 42 # =========================================================
 43 #                         Git
 44 # =========================================================
 45 g () {
 46   case $1 in
 47     "s")
 48       git status
 49       ;;
 50     "d")
 51       git diff
 52       ;;
 53   esac
 54 }

답변1

"$@"모든 인수는 올바르게 인용된 인수로 대체되므로 하위 명령 바로가기를 이동한 후 삭제하세요.

g () {
  cmd=$1
  shift
  case "$cmd" in
    s) git status "$@" ;;
    d) git diff "$@" ;;
  esac
}

git하지만 이 작업을 수행하지 말고 대신에 위의 별칭을 설정 하는 것이 좋습니다 .

git alias s status
git alias d diff

또는 하나도 없는 경우 git-alias(보통 git-extras),

git config --global alias.s status
git config --global alias.d diff

(한 번만 수행하면 별칭이 에 저장됩니다 ~/.gitconfig.)

그런 다음 셸에서

alias g=git

g s매개변수를 포함하여 예상한 대로 작동하는 것을 확인할 수 있습니다 .

답변2

예를 들어

#!/bin/bash

g () {
    for arg in "$@"; do echo "$arg"; done
}
g 1 2 3 4

스크립트 실행

$ ./git.sh
1
2
3
4

관련 정보