쉘 스크립트(Shell Script) 기초(4) - 서브 쉘(Sub Shell)

Ubuntu 14.04 LTS 환경을 기준으로 작성되었습니다.

아래는 dir1, dir2, dir3 디렉토리를 만들어 각각의 디렉토리에 file.txt 파일을 추가하는 스크립트이다.

#!/bin/bash

mkdir dir1  
mkdir dir2  
mkdir dir3

for dir in dir1 dir2 dir3  
do  
  cd $dir
  touch file.txt
  cd .. # 주목
done  

for 문이 끝날 때마다 다시 부모 디렉토리로 돌아가기 위해 cd .. 명령어가 필요하다.

이 때 서브 쉘(Sub Shell) 을 이용하면 더 깔끔하게 스크립트를 작성할 수 있다. 서브 쉘 은 쉘에서 일시적인 분신을 만들어 그 쪽에서 명령어를 실행하는 방법이다. 서브 쉘 로 실행하고 싶은 명령어열 전체를 괄호로 감싸면 된다.

#!/bin/bash

mkdir dir1  
mkdir dir2  
mkdir dir3

for dir in dir1 dir2 dir3  
do  
  (cd $dir
  touch file.txt)
done  

출처