test 명령어 기본 이해
Linux 의 test 명령은 쉘 스크립트에서 조건을 평가하는 데 중요한 도구입니다. 파일 속성을 확인하고, 문자열을 비교하고, 숫자 값을 평가하는 등의 작업을 수행할 수 있습니다. 테스트 중인 조건이 참이면 test는 0 의 종료 상태를 반환하고, 그렇지 않으면 0 이 아닌 종료 상태를 반환합니다.
기본 사항부터 시작해 보겠습니다. 먼저, 프로젝트 디렉토리로 이동합니다.
cd ~/project
test 명령은 두 가지 방법으로 작성할 수 있습니다.
test 단어 다음에 조건을 사용합니다.
- 조건 주위에 대괄호
[ ]를 사용합니다.
두 가지 방법을 모두 사용하여 디렉토리가 존재하는지 확인해 보겠습니다.
## Method 1: Using the word 'test'
test -d ~/project && echo "The project directory exists."
## Method 2: Using square brackets
[ -d ~/project ] && echo "The project directory exists."
두 명령 모두 다음 출력을 볼 수 있습니다.
The project directory exists.
-d 옵션은 디렉토리가 존재하는지 확인합니다. && 연산자는 테스트 조건이 참인 경우에만 echo 명령을 실행하는 데 사용됩니다.
일부 일반적인 파일 테스트 옵션은 다음과 같습니다.
-d file: 파일이 존재하고 디렉토리인 경우 참
-e file: 파일이 존재하는 경우 참
-f file: 파일이 존재하고 일반 파일인 경우 참
-r file: 파일이 존재하고 읽을 수 있는 경우 참
-w file: 파일이 존재하고 쓸 수 있는 경우 참
-x file: 파일이 존재하고 실행 가능한 경우 참
-s file: 파일이 존재하고 크기가 0 보다 큰 경우 참
테스트 파일을 만들고 속성을 확인해 보겠습니다.
## Create a test file
echo "Hello, Linux condition testing!" > test_file.txt
## Check if the file exists
test -e test_file.txt && echo "The file exists."
## Check if the file is readable
[ -r test_file.txt ] && echo "The file is readable."
## Check if the file is empty
[ -s test_file.txt ] && echo "The file is not empty."
이러한 명령은 다음 출력을 생성해야 합니다.
The file exists.
The file is readable.
The file is not empty.
이제 test 명령을 사용하여 파일이 존재하는지 확인하고, 존재하지 않으면 파일을 생성하는 간단한 쉘 스크립트를 만들어 보겠습니다.
## Create a script file
cat > check_file.sh << 'EOF'
#!/bin/bash
FILENAME="status.txt"
if [ ! -e "$FILENAME" ]; then
echo "File $FILENAME does not exist. Creating it now."
echo "This is a status file." > "$FILENAME"
else
echo "File $FILENAME already exists."
fi
## Display file content
echo "Content of $FILENAME:"
cat "$FILENAME"
EOF
## Make the script executable
chmod +x check_file.sh
## Run the script
./check_file.sh
스크립트를 실행하면 다음과 유사한 출력을 볼 수 있습니다.
File status.txt does not exist. Creating it now.
Content of status.txt:
This is a status file.
스크립트를 다시 실행하면 다음을 볼 수 있습니다.
File status.txt already exists.
Content of status.txt:
This is a status file.
이것은 test 명령을 사용하여 파일 존재 여부를 확인하고 결과에 따라 다른 작업을 수행하는 방법을 보여줍니다.