본문 바로가기

코딩과 교육/전문코딩

Linux shell 스크립트 실습 예제 1

실습1. 다음 지시사항대로 셸 스크립트를 만들어 보세요.
-1. 홈디렉토리 아래에 A0000 부터 A9999 까지 디렉토리 생성
- 스크립트 이름 : mkd_10k.sh
- ubuntu 사용자의 경우
- /home/ubuntu/A0000, /home/ubuntu/A0001, /home/ubuntu/A0002, ... 

for 를 사용하는 방법이 몇가지 있으며 그 중 우분투 18.04 에서 bash 사용시 seq 를 이용하는 것이 가능하다. 아래코드에서 if 조건을 반대로 (-lt 대신 -gt 를 사용) 하면 조금 더 효율적으로 코딩이 가능하다.

#!/bin/bash
cd $HOME

names=$(seq 0 9999)

for name in $names
do 
  if [ $name -lt 10 ]
  then 
    fname=A000$name
  else
    if [ $name -lt 100 ]
    then 
      fname=A00$name
    else
      if [ $name -lt 1000 ]
      then 
        fname=A0$name
      else
        fname=A$name
      fi
    fi
  fi
  mkdir $fname
done


-2. A0000 부터 A9999 까지의 모든 디렉토리에 readme.txt 파일을 만들고 다음 내용을 2줄로 넣습니다.
- 스크립트 이름 : mkd_readme.sh
- 디렉토리 PATH
- 디렉토리명 + "에 오신것을 환영합니다."
- cat /home/ubuntu/A0000/readme.txt 의 결과는 다음과 같아야 합니다.

/home/ubuntu/A0000
A0000에 오신것을 환영합니다.

위 1번 결과에서 mkdir $fname 부분만 다음과 같이 수정한다.

cd $HOME"/"$fname
echo $PWD > readme.txt
echo $fname"에 오신것을 환영합니다." >> readme.txt



추가수정내용

#!/bin/bash

cd $HOME

f_names=$(seq 0 9999)

for f_name in $f_names
do
  if [ $f_name -gt 999 ]; then name=A$f_name
    else if [ $f_name -gt 99 ]; then name=A0$f_name 
      else if [ $f_name -gt 9 ]; then name=A00$f_name 
        else if [ $f_name -gt 0 ]; then name=A000$f_name 
        fi
      fi
    fi
  fi

# STEP 1 - make directory
#mkdir $name
#echo $name

# STEP 2 - make file
cd $HOME"/"$name
echo $PWD > readme.txt
echo "$name에 오신것을 환영합니다." >> readme.txt

done