기록해! 정리해!

Rinux (9) -쉘 스크립트 출력(echo) 본문

Rinux

Rinux (9) -쉘 스크립트 출력(echo)

zsuling 2022. 6. 8. 17:06

06/08

fedora20_8_shell.ppt
0.64MB

 

리눅스 쉘 프로그램

 

제어 : 조건문을 만들 수 있다는 뜻

 

 

º  프로그램에서 변수를 사용하는 방법

1. 형을 선언하고 변수 사용하기

   : int k , String k ... 자바

2. 값이 들어오면 변수의 형이 정의되는 방법

   : k=10 , k= '우리' ... 자바스크립트, 리눅스 쉘 

 

º  99,  01022223333

: 숫자 ,  문자 (앞에 0이 있고 이걸로 연산하지는 않으니까) 

 

º  Shell 스크립트 파일 만들기

1. 변수는 대소문자를 구분한다.

2. 변수에서 문자 숫자 구분은 없다.

3. 숫자  A=10,  문자 A=“10”

4. 지정된 변수를 사용 할때는 $  기호를 사용

    예) os = linux

         echo  $os

5. read 문 – 사용자의 표준입력을 받아 들여

                  변수로 사용할때 사용.

 

예제) 

#! /bin/bash   --주석이 아니라 선언문
echo -n "input name: "  --출력해라
    read name  --값 입력받아라
echo $name

[root@localhost ~]# ls -l

-rw-r--r--  1 root root    61  6월  8 10:09  test.sh

[root@localhost ~]# chmod +x test.sh --퍼미션 변경 
[root@localhost ~]# ls -l

-rwxr-xr-x  1 root root    61  6월  8 10:09  test.sh

[root@localhost ~]# ./test.sh --sh test.sh 안쓰고 ./ 만 써도 실행가능
input name: 

 

º

 

º number.sh

#! /bin/bash

if   [   4   -gt    9   ]    -- -gt= > (띄어쓰기 유의)       

   then                               

      echo " A "   --참일 경우 출력

   else

      echo " B "   --거짓일 경우 출력

fi    --if의 반대로

 

º String.sh

#! /bin/bash
if [ aaa = "aaa" ]
  then
       echo "="
   else
       echo "!="
fi

 

º 백그라운드 : 눈에 안보이는 거

  포그라운드 : 눈에 보이는거

 

º 숫자계산

expr  :  숫자 계산

+ : 더하기,  - : 빼기 ,  / 나누기 ,  % 나머지

* : 곱하기 (‘\*’ 로 사용한다.)

[주의사항]

 expr 로 지정하는 경우 역따옴표 `   ` 를 사용.

연산자 *괄호 앞에는 역슬래시(\) 를 같이 사용

연산자와 숫자, 변수, 기호 사이에는 Space 가 존재해야 한다

 

예제 1)

#! /bin/bash
num=`expr 2 + 10 - 4`
echo $num

 

예제 2)

num=`expr   \(  2 + 10  \)   \*  4`

echo $num

 

예제 3) 1-10까지 출력

#! /bin/bash
echo -n "aaa:"
 read A
B=11
while [ $A -lt $B ] -- -lt = <
 do
  echo $A
   A=`expr $A + 1`
  done
 echo "end"

 

예제 3) 1-10까지 출력, 누적합 나타내기

#! /bin/bash
echo -n "aaa:"
 read A
B=11
while [ $A -lt $B ] -- -lt = <
 do
  echo $A

   s=`expr $s + $A`
   A=`expr $A + 1`
  done
 echo "end"

 echo " ===== "
 echo "누적합:"$s

 

예제 4) if문을 이용해 홀수 합만 구해보기

#! /bin/bash
echo -n "aaa:"
 read A
B=11
while [ $A -lt $B ]
 do
  if [ `expr $A % 2` -eq 1 ]
  then
  echo $A
   s=`expr $s + $A`
  fi
   A=`expr $A + 1`

  done

 echo "end"
 echo "======="
 echo "누적합:"$s

예제 5)

#! /bin/bash

echo   " end ^^ "

echo   " end ^^ "

echo   " end ^^ "

echo   " end ^^ "

 

예제 6) 당겨쓰기

#! /bin/bash

echo -n "1"

echo -n "2"

echo -n "3"

echo "4"

예제 7)

#! /bin/bash
 echo -n "Name: "
  read name
 echo " MY NAME IS $name ^^"

º  if문은 항상 then

   while문은 항상 do done

   for문은 항상 do done

 

예제 8)

#! /bin/bash
read AA
if [ $AA -gt 0 ]
then
 echo "++++"
else
 echo "----"
fi

º 관계연산자

: 조건문 등에서 관계 연산자 and 나 or 등이

 있는 쉘 스크립트를 작성할 때 이들을 매우 유용

하게 사용할 수 있다.

 -a   :  and                ,  -o  : or 

모두 다 참                    여러개 중 하나 이상만 참이어도 참

 

예제 9)

#! /bin/bash
echo -n "input  number  7, 8: "
  read   _num
if [ \( $_num -lt 7 \) -o \( $_num -gt 8 \) ]  -- <, >
   then
       echo "7, 8<--- input number(bed "
fi
if [ $_num  -eq  7 ]
  then
     echo "input number : 7 "
fi
if [ $_num  -eq  8 ]
  then
     echo "input number : 8 "
fi

º for 구문

 : 괄호 2개를 씀

 

예제 10)

#! /bin/bash

for   ((  i=1; i <=10; i++)) --초기값, 조건 , 증감

   do

     echo  $i  

done

예제 11) 1, 2,...10 출력해보기

#! /bin/bash
for (( i=1; i<=10; i++))
 do
 if [ $i -eq 10 ]
  then
  echo "$i"
else
   echo -n "$i, "
 fi
done

예제 12) 

#! /bin/bash

for i in 1 2 3 4 5

   do

     echo  $i

done

º seq

º 중첩 for 문

#! /bin/bash

for  i  in  `seq 1  3`

   do

     for   j  in  `seq  4  6`

       do

         A=`expr  $i + $j`

         echo  $A

       done

done

 

예제 13) 구구단 3단 출력해보기

#! /bin/bash/
for i in `seq 9`
 do
value=`expr $i \* 3 `
  echo " 3 X $i = $value "

done

 

예제 14) 구구단 가로로 숫자열맞춰서 출력해보기 (for 구문사용)

for i in `seq 9`

do

for dan in `seq 2 9`

do

value=`expr $i \* $dan `

if [ $value -lt 10 ]

then

echo -n "$dan x $i = 0$value "

else

echo -n "$dan x $i = $value "

fi

done

echo " "

done


예제 15) while 구문써서 구구단 출력

#! /bin/bash/
for i in `seq 9`
do
 dan=2 --while 구문에는 꼭 초기값 필요
 while [ $dan -lt 10 ]
 do
   value=`expr $i \* $dan `
   if [ $value -lt 10 ]
   then
    echo -n "$dan x $i = 0$value "
   else
     echo -n "$dan x $i = $value "
   fi
  dan=`expr $dan + 1 ` --있어야 무한루프 돌지 않음
  done
  echo " "
 done

 

예제 16) 2중while 구문써서 구구단 출력

! /bin/bash/
 i=1
 while [ $i -lt 10 ]
do
 dan=2
 while [ $dan -lt 10 ]
 do
   value=`expr $i \* $dan `
   if [ $value -lt 10 ]
   then
    echo -n "$dan x $i = 0$value "
   else
    echo -n "$dan x $i = $value "
   fi
  dan=`expr $dan + 1 `
  done
  echo " "
  i=`expr $i + 1 `
 done

 

예제 17) 구구단 3단, 7단 나타내기

#! /bin/bash/
 i=1
 while [ $i -lt 10 ]
 do
 dan=2
 while [ $dan -lt 10 ]
 do
  if [ \( $dan -eq 3 \) -o \( $dan -eq 7 \) ]
   then
   value=`expr $i \* $dan `
   if [ $value -lt 10 ]
   then
    echo -n "$dan x $i = 0$value "
   else
    echo -n "$dan x $i = $value "
   fi
  fi
  dan=`expr $dan + 1 `
  done

  echo " "
  i=`expr $i + 1 `
 done

º until 문 ( while의 반대 동작)

 

º case 구문

 

예제 18) 
  #! /bin/bash/
 echo -n " 당신의 직업은 리눅스 엔지니어입니까 (Y|N)"   -- |(파이프라인) = or연산
 read _job
 case "$_job" in
 y|Y)
  echo " 당신의 직업은 리눅스 엔지니어입니다."
 exit;;
 n|N)
  echo " 당신의 직업은 모르겠군요."
 exit;;
*)
  echo "잘못입력하였습니다!!"
 exit;;
esac

예제 19)

#! /bin/bash/
echo -n "
 [1]start [2]stop [3]restart"
 read _job
 case "$_job" in
1)
 systemctl start httpd
 ps aux | grep 'httpd' | grep -v grep
 exit ;;
2)
 systemctl stop httpd
 ps aux | grep 'httpd' | grep -v grep
 exit ;;
3)
 systemctl restart httpd
 ps aux | grep 'httpd' | grep -v grep
 exit;;
*)
  echo "  " ;;
esac

 

예제 20) clear

#! /bin/bash/
echo -n "
 [1]start [2]stop [3]restart"
 read _job
 case "$_job" in
1)
 systemctl start httpd
 clear
 ps aux | grep 'httpd' | grep -v grep
 exit ;;
2)
 systemctl stop httpd
 claer
 ps aux | grep 'httpd' | grep -v grep
 exit ;;
3)
 systemctl restart httpd
 clear
 ps aux | grep 'httpd' | grep -v grep
 exit;;
*)
  echo "1, 2, 3 번 중에 선택하시오  " ;;


esac

1 누르면 화면 다 클리어되고 결과값만 뜬다
4번 눌렀을 경우

 

'Rinux' 카테고리의 다른 글

Rinux (예제 4)  (0) 2022.06.09
Rinux (10) -빈 파일, 계정 생성  (0) 2022.06.08
Rinux (8)- 그누보드  (0) 2022.06.07
Rinux (7)  (0) 2022.06.07
Rinux 예제(3)  (0) 2022.06.07
Comments