여기 문서의 경로를 사용하는 방법

여기 문서의 경로를 사용하는 방법

나는 해당 경로 아래에 일부 스크립트를 가져오기 위해 이 문서를 작성했지만, ~/own_scripts/작성한 방식으로 인해 해당 경로가 중복되었습니다.

source <<-EOF
  ~/own_scripts/1.sh
  ~/own_scripts/2.sh
  # More scripts under ~/own_scripts;
EOF

경로를 사용하여 변수를 설정한 다음 설정을 해제하는 것은 괜찮지만 여전히 중복이 발생합니다.

여기 문서에서 이러한 source(또는 ) 경로 중복을 피하는 가장 좋은 방법은 무엇입니까?bash

답변1

여기서 문서는 단지 문서일 뿐입니다. 이 문서의 스크립트는 바로 스크립트입니다.

스크립트는 다음과 같이 작성할 수 있습니다.

cd "$HOME/own_scripts" || exit 1
./1.sh
./2.sh

또는 호출하려는 모든 스크립트의 호출 n.sh범위가 n1~30인 경우:

cd "$HOME/own_scripts" || exit 1
for (( i = 1; i <= 30; ++i )); do
    [ -x "${i}.sh" ] && ./${i}.sh
done

그건,

source <<-'END_SCRIPT'
    cd "$HOME/own_scripts" || exit 1
    for (( i = 1; i <= 30; ++i )); do
        [ -x "${i}.sh" ] && ./${i}.sh
    done
END_SCRIPT

실제로 여기에 있는 문서는 이제 짧기 때문에 다시 삭제할 수 있습니다 cd.

source <<-'END_SCRIPT'
    for (( i = 1; i <= 30; ++i )); do
        [ -x "$HOME/own_scripts/${i}.sh" ] && "$HOME/own_scripts/${i}.sh"
    done
END_SCRIPT

표준 입력에서 읽지 않을 뿐이므로 source여기에서 문서 소싱이 시작되지 않습니다.

대신 다음과 같은 것을 사용하십시오.

bash <<-'END_SCRIPT'
    ...as above...
END_SCRIPT

( bash이것이 스크립트를 실행하려는 쉘인 경우).

  • 'END_SCRIPT'여기서 문서를 시작하는 데 익숙합니다 . 인용하면 현재 쉘이 문서의 변수를 확장하는 것을 방지하고 더 자세한 마크업이 독자를 위한 문서로 사용됩니다.

  • 물결표 이후로 $HOME대신 사용했습니다.~변수처럼 동작하지 않습니다더 자세한 내용은 $HOME스크립트 내 문서화에 더 적합합니다.

  • 여기에 있는 문서의 스크립트는 cd디렉터리를 해당 $HOME/onw_script디렉터리로 변경하는 데만 사용됩니다. 실패하면 쉘 세션이 종료됩니다.

  • for-loop (셸에서 작동 bash) 을 사용한 예에서는 ksh루프에서 실행될 스크립트의 이름을 생성합니다. 또한 테스트를 사용하여 실행을 시도하기 전에 -x해당 이름을 가진 실행 파일이 실제로 존재하는지 테스트합니다 .

관련 정보