링크 ux 운영 실전 연습 - 2015 년 9 월 13 일 - 9 월 15 일 과정 작업

8454 단어 linux지식 점
1. 숙제 (연습) 내용:
1. 셸 프로그램의 운행 원 리 를 설명 합 니 다 (필요 한 도형 설명 을 첨부 할 수 있 습 니 다).
2. 셸 프로 그래 밍 에 관련 된 모든 지식 점 (예 를 들 어 변수, 문법, 명령 상태 등) 을 정리 하고 그림 을 가 져 가 야 합 니 다.
3. 과정 에서 말 한 모든 순환 문, 조건 판단 의 사용 방법 과 관련 된 예 를 정리한다.(if (jpg|png is not exist);echo ”You say a XX“)
4. 텍스트 처리 도구 sed 및 awk 의 용법 을 정리 합 니 다. (예시 가 있어 야 합 니 다)
5. 스 크 립 트 쓰기: 경로 가 존재 하지 않 으 면 디 렉 터 리 로 만 듭 니 다. 그렇지 않 으 면 존재 하 는 것 을 표시 하고 내용 형식 을 표시 합 니 다. (의심 하지 마 세 요. 이렇게 간단 합 니 다)
#/bin/bash
#Program:
#        :        ,        ;       ,       
#    roger    20150920

read -p "       :" dir
[ -z "$dir" ] && echo "         " && exit 0
if (ls "$dir" &> /dev/null ); then
    fileType=$(file "$dir")
    echo "$dir             :$fileType"
else
    mkdir -p $dir
    echo "$dir      ,     $dir"
fi

6. 스 크 립 트 를 작성 하여 다음 과 같은 기능 을 완성 합 니 다. 주어진 두 가지 수치, 어느 것 이 크 고 어느 것 이 작은 지 판단 합 니 다. 주어진 수치 방법: 스 크 립 트 파라미터, 명령 상호작용; (read 를 사용 하면 여전히 간단 합 니 다)
#/bin/bash
#Progrom:
#             ,    ;       :    
# roger 20150920
[ -z $1 ] && [ -z $2 ]&& echo "        > {CompareNum.sh num1 num2 }" && exit 0
#          
num1=$(echo $1 | grep '^[0-9]\+$')
num2=$(echo $2 | grep '^[0-9]\+$')
[ -z $num1 ] && echo "$1        " && exit 0
[ -z $num2 ] && echo "$2        " && exit 0
#       
[ $1 -lt $2 ] && echo "$1 < $2 " && exit 0
[ $1 -gt $2 ] && echo "$1 > $2 " && exit 0
[ $1 -eq $2 ] && echo "$1 = $2 " && exit 0
#/bin/bash
#Progrom
#             ,    ;       :    
# roger 20150920
#      
read -p "       :" num1 num2
[ -z $num1 ] && [ -z $num2 ]&& echo "        !! " && exit 0
#          
testnum1=$(echo $num1 | grep '^[0-9]\+$')
testnum2=$(echo $num2 | grep '^[0-9]\+$')
[ -z $testnum1 ] && echo "$num1        " && exit 0
[ -z $testnum2 ] && echo "$num2        " && exit 0
#       
[ $num1 -lt $num2 ] && echo "$num1 < $num2 " && exit 0
[ $num1 -gt $num2 ] && echo "$num1 > $num2 " && exit 0
[ $num1 -eq $num2 ] && echo "$num1 = $num2 " && exit 0

7. 100 이내 의 모든 홀수 의 합 을 구 합 니 다 (적어도 3 가지 방법 을 사용 합 니 다. 예, 이것 은 우리 의 숙제 입 니 다 ^ ^)
#!/bin/bash
# Program:
#    100             
# roger 20150920

PATH=/bin:/sbin/:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export     PATH

echo "      "
echo "1   i=1 i+=2      ;for  "
echo "2   i%2!=0    ;for  "
echo "3   while      "

read -p  "           (ex. 1):" method

sum=0
i=1

case $method in
  "1")
    for i in $(seq 1 2 100)
    do
        sum=$[$sum + $i]
    done
    ;;
  "2")
    for i in {1..100}
    do
      if [ $(($i%2)) != "0" ]; then
        sum=$[$sum + $i]
      fi
    done
    ;;
  "3")
    while [ "$i" -le "100" ]
    do
      sum=$[$sum + $i]
      i=$(($i+2))
    done
    ;;
   *)
    echo "      !     1 / 2 / 3"
    exit 0;
esac
#    
echo "1+3+5+...+97+99   sum= $sum"

8. 스 크 립 트 를 작성 하여 다음 과 같은 기능 을 수행 합 니 다.
(1) 스 크 립 트 에 두 텍스트 파일 경 로 를 전달 합 니 다.
(2) 두 파일 중 공백 줄 수가 많은 파일 과 공백 줄 의 개 수 를 표시 합 니 다.
(3) 두 파일 중 총 줄 수가 많은 파일 과 총 줄 수 를 표시 합 니 다.
#!/bin/bash
# Program:
#              :
#    (1)              ;
#    (2)                         ;
#    (3)                     ;

PATH=/bin:/sbin/:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export     PATH

#    
read -p "           " txtPath1 txtPath2

#  check
[ ! -f $txtPath1 ] && echo "            " && exit 0
[ ! -f $txtPath2 ] && echo "            " && exit 0

#                        ;
##    
spLines1=$( grep '^$' $txtPath1 | wc -l )
spLines2=$( grep '^$' $txtPath2 | wc -l )
##      
if [ $spLines1 -lt $spLines2 ]; then
    echo -e "           : $txtPath2 
: $spLines2 " elif [ $spLines1 -gt $spLines2 ]; then     echo -e " : $txtPath1 
: $spLines1 " else      echo -e " $txtPath1   $txtPath2  , : $spLines1 " fi # ; ## sumLines1=$( wc -l $txtPath1 | cut -d ' ' -f1 ) sumLines2=$( wc -l $txtPath2 | cut -d ' ' -f1 ) ## if [ "$sumLines1" -lt "$sumLines2" ]; then     echo -e " : $txtPath2 
: $sumLines2 " elif [ "$sumLines1" -gt "$sumLines2" ]; then     echo -e " : $txtPath1 
: $sumLines1 " else      echo -e " $txtPath1   $txtPath2  , : $sumLines1 " fi

9. 대본 쓰기
(1) 사용자 에 게 문자열 을 입력 하 라 고 알려 줍 니 다.
(2) 판단:
quit 를 입력 하면 스 크 립 트 를 종료 합 니 다.
그렇지 않 으 면 입력 한 문자열 의 내용 을 표시 합 니 다.
#!/bin/bash
# Program:
#         
#    (1)            ;
#    (2)   :
#          quit,     ;
#      ,            ;
#
# roger 20150920

PATH=/bin:/sbin/:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export     PATH

read -p "        :" str

[ -z $str ] && echo "         " && exit 0

if [ $str = "quit" ]; then
    exit 0
else
    echo "       :"$str" "
fi

10. 스 크 립 트 를 작성 하고 2 ^ n 표를 인쇄 합 니 다. n 은 사용자 가 입력 한 값 과 같 습 니 다. (죄송합니다. 장 난 스 럽 습 니 다)
#!/bin/bash
# Program:
#      2^n ;n          ;
#
# roger 20150920

PATH=/bin:/sbin/:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export     PATH

read -p "       :" n

num=$( echo $n | grep '^[0-9]\+$')

[ -z $num ] && echo "        " && exit 0

i=0
while [ $i -le $n ]
do
  echo "2^$i=$((2**$i))"
  let i++
done

11. 스 크 립 트 를 작성 하고 이렇게 몇 가지 함 수 를 씁 니 다. 함수 1, 주어진 두 수치의 합 을 실현 합 니 다. 함수 2, 주어진 두 수치의 최대 공약수, 함수 3, 주어진 두 수치의 최소 공배수, 함수 에 대한 선택, 두 수치의 크기 는 모두 상호작용 입력 을 통 해 제 공 됩 니 다.
#!/bin/bash
# Program:
#         ,       :
#          1、            ;
#          2、             ;
#          3、             ;
#               、                   。
# roger 20150920

PATH=/bin:/sbin/:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export     PATH

echo "       :"
echo "1            "
echo "2              "
echo "3              "

#  read       ,            $1 $2    ,        ,      
#read -p  "       : " num1 num2
####        
###[ -z $1 ] && [ -z $2 ]&& echo "        " && exit 0
####          
##num1=$(echo $1 | grep '^[0-9]\+$')
##num2=$(echo $2 | grep '^[0-9]\+$')
##[ -z $num1 ] && echo "$1        " && exit 0
##[ -z $num2 ] && echo "$2        " && exit 0

#     :
read -p  "       : " n1 n2
#        
[ -z $n1 ] && [ -z $n2 ]&& echo "        " && exit 0
#          
num1=$(echo $n1 | grep '^[0-9]\+$')
num2=$(echo $n2 | grep '^[0-9]\+$')
[ -z $num1 ] && echo "$n1        " && exit 0
[ -z $num2 ] && echo "$n2        " && exit 0

read -p  "           (ex. 1):" method


declare -i resultSum=0 #     
declare -i resultGcd=0 #     
declare -i resultLcm=0 #     

#  
function sum() {
    resultSum=$(($1+$2))
}

#     
function gcd() {
    a=$1
    b=$2
    if [ $1 -lt $2 ]; then
        c=$a
        a=$b
        b=$c
    fi

    while [ "$b" != 0 ]
    do
        c=$[ $a%$b ]
        a=$b
        b=$c
    done
    resultGcd=$a
}

#     
function lcm(){
    lcma=$[ $1*$2 ]
    gcd $1 $2
    lcmb=$resultGcd 
    resultLcm=$[ $lcma/$lcmb ]
}

case $method in
    "1") 
        sum $num1 $num2
        echo "   :$num1 + $num2 = $resultSum"
        ;;
    "2")
        gcd $num1 $num2
        echo "$num1" "$num2"       :"$resultGcd"
        ;;
    "3")
        lcm $num1 $num2
        echo "$num1" "$num2"       :"$resultLcm"
        ;;
     *)
        echo "       ,    1   2   3 "
        exit 0
esac

만약 잘못 이 있 으 면 지적 하여 바로잡아 주 십시오!
감사합니다!

좋은 웹페이지 즐겨찾기