C++ 컴파일부터 실행까지 자동으로 하는 쉘 스크립트를 만들었다
이번에는 커맨드 라인에서 C++을 컴파일하고 실행하는 사람을 향해 그 두 가지를 단번에 해 버리는 스크립트를 소개합니다.
작성한 스크립트
다음을
.bashrc
또는 .zshrc
에 추가하십시오.함수명이나 컴파일 옵션 등은 적절히 변경해 주시면 좋겠습니다.
.bashrc
function runcpp () {
echo -e "[\e[34mx\e[0m] g++ -std=gnu++17 -Wall -Wextra -O2 $1 -o a.out"
g++ -std=gnu++17 -Wall -Wextra -O2 $1 -o a.out
result=$?
if [ $result -ne 0 ]
then
echo -e "[\e[31m-\e[0m] compile failed"
else
echo -e "[\e[32m+\e[0m] successful complie"
echo -e "[\e[34mx\e[0m] run ./a.out"
./a.out
fi
}
실행 결과
스크립트 설명
스크립트는 다음과 같이 사용합니다.
$ runcpp filename.cpp
내용의 흐름은
g++
실행 ./a.out
를 실행하고, 그렇지 않으면 종료 라고 하는 매우 심플한 것입니다. 그러나 넷상에는 컴파일중인가
a.out
를 실행중인지 잘 모르는 것이 많이 「스크립트의 실행 상황을 알기 쉽게 표시」하는 것이 보이지 않았기 때문에 작성했습니다.첫째,
echo -e "[\e[34mx\e[0m] g++ -std=gnu++17 -Wall -Wextra -O2 $1 -o a.out"
g++ -std=gnu++17 -Wall -Wextra -O2 $1 -o a.out
$1
에서 얻은 이름의 cpp 파일을 컴파일합니다.echo
명령에 [\e[34mx\e[0m]
와 엉망인 부분이 있습니다만, ANSI 이스케이프 시퀀스라고 하는 것을 사용해 터미널에서의 출력에 장식을 하고 있습니다. 이 경우 [x] g++ -std=gnu++17 -Wall -Wextra -O2 $1 -o a.out
와 출력하고 [x]
의 x
는 파란색으로 표시됩니다.다음
result=$?
if [ $result -ne 0 ]
then
echo -e "[\e[31m-\e[0m] compile failed"
else
echo -e "[\e[32m+\e[0m] successful complie"
echo -e "[\e[34mx\e[0m] run ./a.out"
./a.out
fi
하지만 우선 result 변수에
$?
라는 값을 대입하고 있습니다. $?
는 직전에 실행한 명령의 반환값을 포함하고 있습니다. 이번 「직전의 커맨드」라고 하는 것은 g++ 커멘드입니다. g++의 경우 컴파일에 성공하면 0
가 반환됩니다.그리고 result 의 값이
0
가 아닌지, 그렇지 않은지로 분기하고 있습니다. ( -nq
는 not equal
의 약어 네요)0
가 아니면 [-] complie failed
라고 출력해 종료합니다. 0
이면 [+] successful complie
라고 출력하고 바로 a.out
를 실행합니다. 끝에
간단한 스크립트이지만 편리하므로 꼭 사용해보십시오!
또한 응용하면 다른 언어의 컴파일 및 실행도 마찬가지로 자동화 할 수 있다고 생각하므로 시도해보십시오.
Reference
이 문제에 관하여(C++ 컴파일부터 실행까지 자동으로 하는 쉘 스크립트를 만들었다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ngng628/items/d03ede6209a4e7367c9c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)