제1 2 장 셸 스 크 립 트 의 변수: 방과 후 연습 문제 와 답

1. 셸 스 크 립 트 에서 어떻게 하면 한 줄 을 주석 할 수 있 습 니까?
            #

2. 셸 스 크 립 트 를 어떻게 실행 합 니까?
bash  1.sh    chmod +x 1.sh; ./1.sh

3. 관리 하기 편 하도록 셸 스 크 립 트 를 어느 디 렉 터 리 에 두 기로 약 속 했 습 니까?
   /usr/local/sbin/ 

4. 셸 스 크 립 트 를 더 잘 디 버 깅 하기 위해 서 는 셸 스 크 립 트 의 실행 과정 을 관찰 할 수 있 는 옵션 을 추가 할 수 있 습 니 다. 어떤 옵션 입 니까?
bash -x 1.sh

5. 날짜 명령 으로 5 일 전 날 짜 를 인쇄 합 니 다. 요구 날짜 형식 은 xxxx - xx - xx 입 니 다.
date -d "5 days ago" +%Y-%m-%d  
   date -d "-5 day" +%F

6. 아 밍 의 대본 에 문제 가 있 는 지 판단 하 세 요.
#! /bin/bash

a = 1
b = 2
echo $a, $b

변수 값 을 할당 할 때 빈 칸 을 가 져 왔 습 니 다.
7. 셸 스 크 립 트 에서 수학 연산 을 어떻게 사용 합 니까?예 를 들 어 설명해 주세요.
a=1; b=2
c=$[$a+$b]
echo $c

8. 셸 스 크 립 트 에 스 크 립 트 와 사용자 의 상호작용 을 실현 할 수 있 는 명령 이 있 습 니 다. 어떤 명령 입 니까? 어떻게 사용 합 니까?
read -p 
    
read -p "Please input a number" n
             n      

9. 셸 에서 크기 나 판단 은 어떻게 합 니까?
   -gt      -lt     -ne       -ge       -le     :
if [ $a -ge 0 ]; then ... ;fi

10. 셸 스 크 립 트 에서 어떤 기호 로 표시 하고 어떤 기호 로 표시 하거나?
&&   
||   

11. 셸 스 크 립 트 에서 케이스 논리 판단 의 구 조 는 어떤 것 입 니까?
case $a in 
    1)
        command
    ;;
    2)
        command
    ;;
    *)
        command
    ;;
esac

12.  셸 스 크 립 트 에서 자주 사용 하 는 순환 구 조 를 열거 합 니 다.
for a in ... ; do ... ; done
while ...; do ...; done

13. 셸 스 크 립 트 에서 함수 의 역할 은 무엇 입 니까?함수 구 조 는 어떤 것 입 니까?
함 수 는 셸 스 크 립 트 의 작은 코드 유닛 으로 이해 할 수 있 습 니 다. 이 코드 를 사용 하려 면 함수 이름 을 직접 호출 하면 됩 니 다. 이 코드 를 반복 적 으로 쓰 지 않 고 코드 작성 효율 과 질 을 향상 시 킵 니 다.
함수
function fu_name() {
.....
}

14. 스 크 립 트 를 작성 하여 한 디 렉 터 리 에 있 는 모든 파일 (디 렉 터 리 포함 하지 않 음) 을 파일 이름 뒤에 'bak' 를 추가 합 니 다.
#! /bin/bash

for f in `find . -type f`; do mv $f $f.bak; done

혹시
#! /bin/bash


for i in `ls`; do
  if [ -f $i ]; then
    mv $i $i.bak
  fi
done

15. 셸 스 크 립 트 를 작성 하여 현재 디 렉 터 리 의 크기 가 100 K 이상 인 파일 을 모두/tmp/디 렉 터 리 로 이동 합 니 다.
for f in `find . -type f -size +100K`; do mv $f /tmp/ ; done

16. 이 컴퓨터 의 HOSTNAME, IP 주소 와 DNS 주 소 를 가 져 오 는 작은 스 크 립 트 를 작성 합 니 다.
표준 답안 판:
#!/bin/bash

    hostname=`hostname`
    echo "hostname : " $hostname
    ip=`/sbin/ifconfig -a | grep 'inet addr' | awk -F ':' '{print $2}' | awk '{print $1}'`
   for i in $ip
      do
          echo  "`ifconfig | grep -B1 "$i" | grep -v 'inet addr' | awk '{print $1}'` "$i""
     done
    DNS=`cat /etc/resolv.conf |grep nameserver|grep -v '#'`
    echo  $DNS

개인 버 전:
#! /bin/bash


hostname=`echo $HOSTNAME`
IP=`ifconfig eth0 |sed -n '2'p |awk '{print $2}'|awk -F':' '{print $2}'`
dns=`cat /etc/resolv.conf |grep 'nameserver' |awk '{print $2}' |sed -n '1'p`

echo "hostname=$hostname"
echo "IP=$IP"
echo "dns=$dns"

17. 두 개의 작은 스 크 립 트 를 써 서 break 와 contine 이 순환 하 는 역할 을 검증 합 니 다.
셸 스 크 립 트:
#! /bin/bash


echo "===Test 'break'==="
for i in `seq 1 5`; do
  if [ $i -eq 3 ]; then
    break
  else
    echo $i
  fi
done


echo "===Test 'continue'==="
for i in `seq 1 5`; do
  if [ $i -eq 3 ]; then
    continue
  else
    echo $i
  fi
done

실행 결과:
===Test 'break'===
1
2
===Test 'continue'===
1
2
4
5

좋은 웹페이지 즐겨찾기