시나리오 : 파일명을 입력받으면 해당 파일의 형식을 표시해주는 스크립트를 구성하자
파일 명을 검색 받아 디렉터리면 복사하지 않고, 파일만 지정 위치에 복사하도록 한다.
순차적으로 코드를 구성해보자
1) 파일의 이름을 입력받는다
echo -n "Input filename: ";read fn
-n 으로 외부에서 입력받을 수 있게 한 후 , read fn으로 fn이라는 변수로 해당 파일 이름을 저장한다
2) 받은 이름이 파일인지, 디렉터리인지 구분한다
if [ -e $fn ];then
if [ -d $fn ];then
echo "이것은 디렉터리입니다."
받은 이름의 파일이 존재하는지 -e로 확인한다
또한, -d로 디렉터리인 경우를 구분하여 디렉터리는 복사하지 않고 종료할 수 있도록 한다.
3) 파일의 경우, 복사할 수 있도록 복사할 파일 이름을 입력받는다.
else
echo "Input savefilename: ";read sf
cp $fn $sf
echo "복사 성공!"
복사 할 파일 이름을 sf라는 변수 이름으로 받고 복사한다.
+fi로 if문 마무리하기
==>> 이 fi는 디렉터리와 파일을 구분하는 if문의 마무리!
4) 입력받은 이름으로 존재하는 파일, 디렉터리가 없는 경우 그대로 종료 할 수 있도록 한다
else
echo "파일이 없습니다."
fi
그대로 if문 마무리!
실행해보기 : /root/DD1/file1을 /root/DD2/file2로 복사해보기
현재 DD1, DD2라는 디렉터리는 비어있다.
touch를 통해 DD1디렉터리에 file1을 생성해주고,
준비해둔 Shell을 실행시키니 '복사 성공!' 메세지가 뜬 것을 확인할 수 있다.
ls를 통해 두 디렉터리를 확인해 보니 정상적으로 file2로 복사된 것을 확인할 수 있다.
+++++++++++++++++++++++++
디렉터리를 복사하려고 하면 '이것은 디렉터리입니다'라는 문구와 함께 쉘이 종료된다.
최종 코드
#!/bin/bash
#filename : /root/cpfile.sh
echo "Input filename: ";read fn
if [ -e $fn ];then
if [ -d $fn ];then
echo "이것은 디렉터리입니다."
else
echo "Input savefilename: ";read sf
cp $fn $sf
fi
else
echo "파일이 없습니다."
fi
vi editor : 단축키 (1) | 2024.09.30 |
---|---|
disk partitioning (1) | 2024.09.25 |
Shell Script_function : 계정 일괄 생성/삭제 프로그램 (0) | 2024.03.21 |
Shell Script : 계정 일괄 생성/삭제 프로그램 (0) | 2024.03.21 |
iptables mangle : ttl_set (0) | 2024.03.05 |