; - 앞의 명령어가 실패해도 다음 명령어가 실행
&& - 앞의 명령어가 성공했을 때 다음 명령어가 실행
& - 앞의 명령어를 백그라운드로 돌리고 동시에 뒤의 명령어를 실행
# ; - 성공여부와 상관없이 다음 명령어 실행
$ mkdir test; cd test; touch abc
test 디렉토리가 이미 상황이라면 아래와 같은 결과가 된다.
mkdir test(실패); cd test; touch abc
이 경우 cd test가 실행되고, touch abc도 실행된다.
# && - 성공한 경우에 다음 명령어 실행
반면에 아래의 경우는 cd test와 touch abc가 실행되지 않습니다.
$ mkdir test(실패) && cd test && touch abc
# 명령의 그룹핑 {}
$ mkdir test && { cd test3; touch abc; echo 'success!!' } || echo 'There is no dir';
mkdir test가
성공했을 때 cd test2; touch abc를 실행하고 success!!를 출력합니다.
실패했을 때 echo 'There is no dir'를 실행합니다.
이때 실행되는 명령들은 현재 쉘의 컨텍스트에서 실행됩니다. 만약 서브 컨텍스트에서 실행하고 싶다면 '('와 ')'를 사용하시면 됩니다. (참고)
# 명령어의 반환값
리눅스(유닉스)의 모든 명령어는 종료할 때 성공 여부를 알려줍니다.
test 디렉토리가 없는 곳에서 아래 명령을 실행해보세요.
$ mkdir test
그리고 아래 명령을 실행해보세요.
echo $?
이 명령어는 이전 명령어가 반환한 값을 알아내는 것입니다. 결과는 아래와 같습니다.
0
반대로 test 디렉토리가 이미 있는데 mkdir test를 실행한 후에 echo $?를 실행하면 아래 값이 출력됩니다.
1
또는 존재하지 않는 명령어를 실행하면 127이 출력될꺼예요. 즉 리눅스에서는 0이 아닌 값은 실패(false)를 의미합니다.
즉, 리눅스에서는 0이 아닌 값은 실패(false)를 의미
# 참고사이트
https://opentutorials.org/course/2598/15818
http://www.gnu.org/software/bash/manual/html_node/Command-Grouping.html
'리눅스' 카테고리의 다른 글
[리눅스] 표준출력(stdout), 표준에러(stderr), /dev/null이란? (0) | 2021.04.08 |
---|---|
[리눅스] cat 명렁어로 여러줄 입력하기 (cat << EOF) (0) | 2021.04.08 |
gpasswd: 그룹에 사용자 추가하기 (0) | 2019.01.22 |
리눅스 계정(유저) 생성하는 방법 (0) | 2019.01.04 |
리눅스 find 명령어 사용법 알아보자 (0) | 2018.11.21 |