스크립트를 실행할 디렉터리를 변경하세요.

스크립트를 실행할 디렉터리를 변경하세요.

내 스크립트에서는 디렉터리를 만들고 해당 디렉터리에서 후속 명령을 실행해야 합니다.

아래 스크립트는 디렉터리를 생성하지만 이 스크립트가 호출하는 다음 스크립트( repo init)는 해당 디렉터리에서 실행되지 않습니다.

mkcdir ()
{
    echo "creating directory" $1
    mkdir -p -- ~/"$1" &&
      cd -P -- ~/"$1"
}

mkcdir $1
repo init -u [email protected]:P0/manifest.git -b refs/tags/$1
repo sync

답변1

귀하의 스크립트는 거의 정확합니다. 수정된 버전은 다음과 같습니다.

#!/usr/bin/env bash
mkcdir ()
{
    echo "creating directory" "$1"
    mkdir -p -- ~/"$1" &&
      cd -P -- ~/"$1"
}

mkcdir "$1"
repo init -u [email protected]:P0/manifest.git -b refs/tags/"$1"
repo sync

$19행과 10행 주위에 큰따옴표가 있습니다. $1이것이 없으면 토큰화가 발생하여 인수가 mkcdir분할됩니다. 또한 4행에 따옴표를 추가했습니다. $1나쁜 일은 일어나지 않지만( echo결국 명령일 뿐이므로) 특정 확장 유형은 혼란을 야기할 수 있기 때문입니다. 예를 들어 $1별표( *)를 포함하면 현재 디렉터리의 모든 파일로 확장되며 이는 확실히 원하는 내용이 아닙니다.

그 외에 첫 번째 줄의 hashbang은 나쁜 생각은 아니지만, 특히 bash를 사용하는 경우에는 별 문제가 되지 않습니다.

관련 정보