Bash 산책

7337 단어 bashif연산자&&&&

배시를 쓰는데 햇갈렸던 부분을 정리해 본다.
나도 배시를 가끔 짜지만 이런것들이 없으면 참 짜증이 난다. 그래서 블로그를 정리해 본다. 역시 오늘도 코드로 애기해 본다.

두 명령을 세미콜론 대신 &&|| 연결할 수도 있다.
cd $DIR && ls 는 먼저 cd의 실행이 설공했을 때만 ls를 실행한다.
cd $DIR || echo 'cd 실패'는ㄴ cd 명령이 실패했을 때만 echo 명령어를 실행한다.

예)

[tonyspark:579:~ $] DIR=
[tonyspark:580:~ $] cd $DIR && ls
2  naver.log  naver.log2  project  공개  다운로드  문서  바탕화면  비디오  사진  음악  템플릿
[tonyspark:581:~ $] DIR=1
[tonyspark:582:~ $] cd $DIR && ls
bash: cd: 1: 그런 파일이나 디렉터리가 없습니다
[tonyspark:583:~ $] cd $DIR || ls
bash: cd: 1: 그런 파일이나 디렉터리가 없습니다
2  naver.log  naver.log2  project  공개  다운로드  문서  바탕화면  비디오  사진  음악  템플릿
[tonyspark:584:~ $]

if문 없이 [[ 구문으로 뭔가를 판정하는 것도 가능

[[ -d $DIR ]] && ls "$DIR"

[tonyspark:588:~ $] [[ -d /tmp ]] && ls /tmp
 VMwareDnD            systemd-private-7e95ce236f894f81a321ec71bd89b7b6-ModemManager.service-BuKkeu
'VSCode Crashes'      systemd-private-7e95ce236f894f81a321ec71bd89b7b6-colord.service-0MP5Rd
 _cafenv-appconfig_   systemd-private-7e95ce236f894f81a321ec71bd89b7b6-rtkit-daemon.service-JbBfaK
 config-err-MDOrFP    systemd-private-7e95ce236f894f81a321ec71bd89b7b6-systemd-resolved.service-ro0Qky
 fcitx-socket-:0      systemd-private-7e95ce236f894f81a321ec71bd89b7b6-systemd-timesyncd.service-bkOsUE
 mintUpdate           vmware-root
 ssh-b3xUB8lHicx8     vmware-tonyspark

명령어가 두개면 {} 묶어야 한다.

[[ -d $DIR ]] || { echo "오류:  $DIR"; exit; }

좋은 웹페이지 즐겨찾기