20150913 일 수업 숙제 (셸)

11091 단어 shell
1. 셸 프로그램의 운행 원 리 를 설명 합 니 다 (필요 한 도형 설명 을 첨부 할 수 있 습 니 다).
    셸 은 명령 언어 이자 프로 그래 밍 언어 이자 명령 해석 프로그램 이다.
    셸 스 크 립 트 는 보통 \ #!"\ #! / bin / bash" 와 같은 시작 텍스트 파일 입 니 다. 이 줄 은 shebang 이 라 고 합 니 다. 이 스 크 립 트 셸 을 설명 하 는 경 로 를 지정 합 니 다. 스 크 립 트 를 실행 할 때 시스템 은 이 셸 을 호출 하여 이 스 크 립 트 를 실행 합 니 다.문자 \ # 주석 의 시작 을 표시 합 니 다.주석 부분 은 \ # 를 시작 으로 줄 끝까지 이 어 집 니 다. 주석 줄 은 코드 에 주석 정 보 를 제공 하거나 줄 코드 실행 을 중단 하 는 데 사 용 됩 니 다. 해석 기 는 무시 합 니 다.
     셸 스 크 립 트 는 명령 을 한데 쌓 고 셸 은 문법 분석, 문법 분석, 의미 분석 을 통 해 스 크 립 트 의 명령 을 순서대로 선택 하거나 순환 적 으로 실행 합 니 다.스 크 립 트 실행 이 끝 났 습 니 다. 이 셸 프로 세 스 도 종 료 됩 니 다.
2. 셸 프로 그래 밍 에 관련 된 모든 지식 점 (예 를 들 어 변수, 문법, 명령 상태 등) 을 정리 하고 그림 을 가 져 가 야 합 니 다.
      변수, 변수 연산 및 조건 테스트
      조건 판단 문 if, case 및 read 명령
      순환 문 for, while, until
      함수, 데 드 순환, 모듈 화 프로 그래 밍
3. 과정 에서 말 한 모든 순환 문, 조건 판단 의 사용 방법 과 관련 된 예 를 정리한다.(if (jpg|png is not exist);echo ”You say a XX“)
      순환 문 for, while, until
      변수, 변수 연산 및 조건 테스트
4. 스 크 립 트 쓰기: 경로 가 존재 하지 않 으 면 디 렉 터 리 로 만 듭 니 다. 그렇지 않 으 면 존재 하 는 것 을 표시 하고 내용 형식 을 표시 합 니 다. (의심 하지 마 세 요. 이렇게 간단 합 니 다)
[root@BAIYU_110 ~]# cat test2.sh
#!/bin/bash
#
read -t 10 -p "Please input a file path: " path
if [ -z "$path" ];then
   echo -e "
\033[31mError:\033[0mplease input a file path"    exit 1   elif [ ! -e "$path" ];then      mkdir -p $path $>/dev/null      echo "your input $path is not exist" elif [ -f "$path" ];then      echo  "$path is a general file"      echo -e "\033[31mThe $path:\033[0m"      cat $path elif [ -d "$path" ];then      echo "$path is a directory"      echo -e "\033[31mThe $path:\033[0m"      ls $path else echo "$path unknown type" fi : [root@BAIYU_110 ~]# bash test2.sh Please input a file path: /etc/fstab /etc/fstab is a general file The /etc/fstab: # # /etc/fstab # Created by anaconda on Thu Sep 10 19:38:37 2015 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1 UUID=46c42e9f-f101-4209-9590-afa295415eaf /boot                   ext4    defaults        1 2 /dev/mapper/VolGroup-lv_data /data                   ext4    defaults        1 2 /dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0 tmpfs                   /dev/shm                tmpfs   defaults        0 0 devpts                  /dev/pts                devpts  gid=5,mode=620  0 0 sysfs                   /sys                    sysfs   defaults        0 0 proc                    /proc                   proc    defaults        0 0 [root@BAIYU_110 ~]# bash test2.sh Please input a file path: /tmp /tmp is a directory The /tmp: ks-script-utpPS_      yum.log ks-script-utpPS_.log  yum_save_tx-2015-09-10-20-24RcJDyn.yumtx shell                 yum_save_tx-2015-09-11-21-29ihcHuJ.yumtx test2.sh              yum_save_tx-2015-09-11-21-30ZOEQ7w.yumtx test.sh               yum_save_tx-2015-09-11-21-32anadvE.yumtx [root@BAIYU_110 ~]# bash test2.sh Please input a file path: xx your input xx is not exist [root@BAIYU_110 ~]# ls ~                cc                  shell          test3.sh       xx $                init.sh             test1.sh       test3.sh.orig aa               install.log         test1.sh.orig  test.sh anaconda-ks.cfg  install.log.syslog  test2.sh       test.sh.orig bb               qq                  test2.sh.orig  trash.sh [root@BAIYU_110 ~]# bash test2.sh Please input a file path: /dev/null /dev/null unknown type [root@BAIYU_110 ~]# bash test2.sh Please input a file path:  Error:please input a file path [root@BAIYU_110 ~]# bash test2.sh Please input a file path: aa bb cc your input aa bb cc is not exist

5. 스 크 립 트 를 작성 하여 다음 과 같은 기능 을 완성 합 니 다. 주어진 두 개의 수치, 어느 것 이 크 고 어느 것 이 작은 지 판단 하 는 방법: 스 크 립 트 파라미터, 명령 상호작용 (read 를 사용 하면 여전히 간단 합 니 다)
[root@xxj shell]# cat 9.sh
#!/bin/bash                                 
#
error(){
cat<<EOF
+--------------------------------------------------------+
| Function of the script is to compare two numbers size |    
| Instructions:num_compare.sh num1 num2                  |
| Example:num_compare.sh 11 22                           | 
+--------------------------------------------------------+
EOF
}
echo "$*"|grep '[[:alpha:]]' &>/dev/null && error && exit 1
if [ $# -gt 2 -o $# -le 1 ];then
error
exit 2
elif [ "$1" -gt "$2" ];then
     echo -e "The max is $1
The min is $2" elif [ "$1" -lt "$2" ];then      echo -e "The max is $2
The min is $1" elif [ "$1" -eq "$2" ];then      echo "$1 and $2 as large as" else error fi : [root@xxj shell]# bash 9.sh +--------------------------------------------------------+ | Function of the script is to compare two numbers size |     | Instructions:num_compare.sh num1 num2                  | | Example:num_compare.sh 11 22                           |  +--------------------------------------------------------+ [root@xxj shell]# bash 9.sh a 1 +--------------------------------------------------------+ | Function of the script is to compare two numbers size |     | Instructions:num_compare.sh num1 num2                  | | Example:num_compare.sh 11 22                           |  +--------------------------------------------------------+ [root@xxj shell]# bash 9.sh 1 a +--------------------------------------------------------+ | Function of the script is to compare two numbers size |     | Instructions:num_compare.sh num1 num2                  | | Example:num_compare.sh 11 22                           |  +--------------------------------------------------------+ [root@xxj shell]# bash 9.sh xy zx +--------------------------------------------------------+ | Function of the script is to compare two numbers size |     | Instructions:num_compare.sh num1 num2                  | | Example:num_compare.sh 11 22                           |  +--------------------------------------------------------+ [root@xxj shell]# bash 9.sh 12a 2b3 +--------------------------------------------------------+ | Function of the script is to compare two numbers size |     | Instructions:num_compare.sh num1 num2                  | | Example:num_compare.sh 11 22                           |  +--------------------------------------------------------+ [root@xxj shell]# bash 9.sh 12 34 The max is 34 The min is 12

6. 100 이내 의 모든 홀수 의 합 (적어도 3 가지 방법 을 사용 합 니 다. 예, 이것 은 우리 의 숙제 입 니 다 ^ ^)
(1)、[root@BAIYU_110 ~]# cat test4.sh
#!/bin/bash
#
y=0
for x in $(seq 1 2 100);do                  # for                  
    y=$[$y+$x]
done
    echo "The sum is $y"
[root@BAIYU_110 ~]# bash test4.sh
The sum is 2500
(2)、[root@BAIYU_110 ~]# cat test5.sh
#!/bin/bash
#
x=1
while [ "$x" -le 100 ];do                  # while  
   if [ $[$x%2] -eq 1 ];then
  let y+=$x
   fi
     let x++
done
    echo "The sum is $y"
[root@BAIYU_110 ~]# bash test5.sh
The sum is 2500
(3)、[root@BAIYU_110 ~]# cat test10.sh
#!/bin/bash
#
x=1
until [ $x -gt 100 ];do                    # until  
      if [ $[$x%2] -eq 1 ];then
          let y+=$x
       fi
       let x++
done
       echo "The sum is $y"
[root@BAIYU_110 ~]# bash test10.sh
The sum is 2500

7. 스 크 립 트 를 작성 하여 다음 과 같은 기능 을 수행 합 니 다.
      (1) 스 크 립 트 에 두 텍스트 파일 경 로 를 전달 합 니 다.
      (2) 두 파일 중 공백 줄 수가 많은 파일 과 공백 줄 의 개 수 를 표시 합 니 다.
      (3) 두 파일 중 총 줄 수가 많은 파일 과 총 줄 수 를 표시 합 니 다.
[root@BAIYU_110 ~]# cat test7.sh
#!/bin/bash
#
read -t 10 -p "Please enter two file path: " file1 file2   #      ,       10S        , ENTER      
spaceline1=$(grep "^$" $file1|wc -l)
spaceline2=$(grep "^$" $file2|wc -l)
line1=$(cat $file1|wc -l)
line2=$(cat $file2|wc -l)
###############################################################
compare(){     #        2   3                      ,             ,  2      ,       

if [ $a -gt $b ];then
     echo -e " max $file1
 $file1 :$a" elif [ $a -lt $b ];then      echo -e "max $file2
 $file2 :$b" elif [ $a -eq $b ];then      echo -e "$file1 and $file2 as large as
 space line is $a" else echo "Error please enter two file path!" fi } ############################################################## a=$spaceline1 b=$spaceline2 echo "The space_line:" compare echo a=$line1 b=$line2 echo "The line:" compare : [root@BAIYU_110 ~]# bash test7.sh Please enter two file path: /root/aa /root/bb The space_line:  max /root/aa  /root/aa :2 The line: max /root/bb  /root/bb :11 [root@BAIYU_110 ~]# cat aa aaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaa [root@BAIYU_110 ~]# cat bb bbbbbbbbbbbb bbbbbbbbb a b c ccc cccc d d c

8. 스 크 립 트 작성
      (1) 사용자 에 게 문자열 을 입력 하 라 고 알려 줍 니 다.
      (2) 판단:
quit 를 입력 하면 스 크 립 트 를 종료 합 니 다.
그렇지 않 으 면 (사용자 의 입력 을 계속 기다 리 고) 입력 한 문자열 의 내용 을 표시 합 니 다.
[root@BAIYU_110 ~]# cat test8.sh
#!/bin/bash
#
read -t 10 -p "Please enter string: " var
case $var in
quit)
    exit 1
     ;;
*)
     echo "$var"
     ;;
esac

    :
[root@BAIYU_110 ~]# bash test8.sh
Please enter string: 
[root@BAIYU_110 ~]# bash test8.sh
Please enter string: nihaodaf
nihaodaf
[root@BAIYU_110 ~]# bash test8.sh
Please enter string: quit
2、
[root@xxj shell]# cat 7.sh
#!/bin/bash
#
while true;do
read -p "Please enter string: " str
[ $str == quit ]&&break
echo $str
done

    :
[root@xxj shell]# bash 7.sh
Please enter string: nihao
nihao
Please enter string: sb
sb
Please enter string: quit

9. 스 크 립 트 를 작성 하고 2 ^ n 표를 인쇄 합 니 다. n 은 사용자 가 입력 한 값 과 같 습 니 다. (죄송합니다. 장 난 스 럽 습 니 다)
[root@xxj shell]# cat 33.sh
#!/bin/bash
#
read -t 5 -p "please enter a number: " x
[ -z $x ]&&echo "Errot:please enter a number!"
count=2
for i in $(seq 0 $x);do
    if [ $i -eq 0 ];then
       echo -e "1"
    elif [ $i -eq 1 ];then
       echo -e "2"
    elif [ $i -gt 1 ];then 
    count+=x2              #      ,  “      ”   
    echo $count=$[2**$i]
    else echo "Error:please enter a number!"
    fi
done

    :
[root@xxj shell]# bash 33.sh
please enter a number: 0
1
[root@xxj shell]# bash 33.sh
please enter a number: 1
1
2
[root@xxj shell]# bash 33.sh
please enter a number: 5
1
2
2x2=4
2x2x2=8
2x2x2x2=16
2x2x2x2x2=32
[root@xxj shell]# bash 33.sh
please enter a number: Errot:please enter a number!

10. 스 크 립 트 를 하나 쓰 고 이 몇 가지 함 수 를 씁 니 다.
       함수 1. 주어진 두 수치의 합 을 실현 합 니 다.
       함수 2. 주어진 두 수치의 최대 공약수 추출 하기;
       함수 3. 주어진 두 수치의 최소 공배수, 함수 에 대한 선택, 두 수 치 는 모두 스 크 립 트 매개 변 수 를 통 해 입력 합 니 다.
11. 텍스트 처리 도구 sed 와 awk 의 용법 을 정리 합 니 다. (예시 가 있어 야 합 니 다)
       sed 사용 입문 상세 설명
       sed 진급
       awk 입문 설명 사용
       awk 상용 함수

좋은 웹페이지 즐겨찾기