다음 bash 기능을 설명해주세요

다음 bash 기능을 설명해주세요

이 기능을 온라인에서 찾았습니다. 디렉토리를 생성하고 디렉토리를 변경합니다.

하지만 나는 그것의 모든 부분을 알고 싶습니다.

function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; } 

답변1

이름 목록을 전달할 수 있습니다. 각 디렉토리에 대한 디렉토리를 생성한 다음 CD로 들어갑니다.마지막하나.

이것은 필요하지 않습니다 eval. 나는 다음과 같이 쓸 것입니다 :

mkdircd () { mkdir -p "$@" && cd "${!#}"; }

${!#}사용간접 확장: $#는 매개변수 개수이므로 ${!#}마지막 매개변수의 값입니다.

답변2

mkdir -p "$@"이름이 인수( $@)로 전달되는 모든 디렉터리를 생성합니다.

-p이 옵션을 사용하면 디렉토리가 존재하지 않는 디렉토리에 있는 경우 디렉토리를 재귀적으로 생성할 수 있습니다.

eval cd "\"\$$#\""마지막 디렉터리로 이동하세요. $#전달된 인수 수를 제공하고, 이는 \$$#마지막 인수(예: 인수로 전달한 마지막 디렉터리 이름)를 제공합니다. 예를 들어 3개의 매개변수가 있는 경우 $#명령 3eval실행됩니다 cd "$3".

명령은 실제로 이어야 합니다 . 많은 쉘 은 인수 1과 같은 값을 인수 10의 값으로 처리하기 eval cd "\"\${$#}\""때문에 많은 쉘에서 중괄호가 필요합니다 ."$10"0

관련 정보