사용. bash에서 [복제]

사용. bash에서 [복제]
#!/usr/bin/env bash

scriptdir="$HOME"
touch $scriptdir/foo.txt
. "$scriptdir/foo.txt" ||
{ echo "Missing '$scriptdir/foo.txt'. Exiting." ;
exit 1 ;}
echo "$scriptdir/foo.txt is present"
echo
rm "$scriptdir/foo.txt"
. "$scriptdir/foo.txt" ||
{ echo "Missing '$scriptdir/foo.txt'. Exiting." ;
exit 1 ;}

.in의 사용법을 이해할 수 없습니다.. "$scriptdir/foo.txt" ||

비슷하게 작동하는 것 같습니다 if [ -f "$scriptdir/foo.txt ]. 그렇죠?

그래서

scriptdir="$HOME"
touch $scriptdir/foo.txt
 if [ -f "$scriptdir/foo.txt" ] ; then
   echo
 else
 { echo "Missing '$scriptdir/foo.txt'. Exiting." ;
exit 1 ;}
 fi

비슷한 결과가 나옵니다.

.누군가 여기서 무엇이 사용되었는지 자세히 설명해 주시겠습니까?

foo.txt에 스크립트를 작성하면 .단순히 파일이 존재하는지 확인하는 것이 아니라 파일이 실행되기 때문에 해당 스크립트가 실행될 수 있습니까? 그리고 $scriptdir/foo.txt그것이 존재하고 실행 가능한 한 , ||왼쪽 절반은 종료 상태 0을 반환하기 때문에 오른쪽 절반은 절대 실행되지 않습니다.

답변1

.와 동일한 bash 내장 명령이며 source해당 기능은 현재 쉘의 FILENAME에서 명령을 읽고 실행하는 것입니다. 전체 문서를 보려면 터미널 help .또는 을 입력하세요 . 전체 문서: help source

.: . filename [arguments]
    Execute commands from a file in the current shell.

    Read and execute commands from FILENAME in the current shell.  The
    entries in $PATH are used to find the directory containing FILENAME.
    If any ARGUMENTS are supplied, they become the positional parameters
    when FILENAME is executed.

    Exit Status:
    Returns the status of the last command executed in FILENAME; fails if
    FILENAME cannot be read.

관련 정보