[ETC] Shell Script 접속사 ;, &, &&

ETC

리눅스나 SSH로 접속해서 명령어를 실행하는 상황이 자주 생기고 있습니다.
그럴때마다 새로운 터미널에서 명령어를 순차적으로 반복해서 입력해야하는 번거로움도 동반합니다.
이럴때 shell script를 만들어 반복잡업을 줄일 수 있는데 이 포스트에서는 shell 명령어중에서도 ; & &&에 대해서 써보려합니다.

&&

순차적인 명령어를 제어하다보면 이전 명령어의 성공후 다음명령어를 실행하고, 실패하면 중지해야하는 경우가 있습니다.
이때 사용하는 접속사가 && 입니다.

아래는 실행할 스크립트 정보입니다.

1
2
// script.sh
mkdir test && cd test && touch test.txt

mkdir test에서 오류가 나지 않을 경우 test폴더에 들어가 test.txt를 생성하게 됩니다.

1
2
3
4
% sh script.sh
% cd test
test % ls
test.txt

만약 test라는 폴더가 이미 존재해 mkdir test에서 오류가 나지 않을 경우 test.txt파일을 만들지 않을것입니다.

1
2
3
4
5
% sh script.sh
mkdir: test: File exists
% cd test
% ls
// 생성된 파일이 없음

&

&는 해당 명령어를 백그라운드에서 실행할 때 사용합니다.

;

;는 여러 명령어를 한줄에 서술할때 앞의 명령어의 성공여부에 상관없이 다음 명령어를 실행합니다.

1
2
// script.sh
mkdir test; cd test; touch test.txt
1
2
3
4
5
% sh script.sh
mkdir: test: File exists
% cd test
test % ls
test.txt

명령어의 모음으로 스크립트를 작성하게 되면 생각보다 빈번하게 사용하는 접속사입니다.