정보
-
업무명 : 쉘 스크립트 기초
-
작성자 : 이상호
-
작성일 : 2019-08-28
-
설 명 :
-
수정이력 :
내용
[특징]
-
쉘 스크립트 입문 및 기초 지식을 배양하기 위한 스크립트가 필요하며 이 프로그램은 이러한 목적을 달성하기 위해 고안된 소프트웨어
[기능]
-
ShellScript (csh) 기초 지식
-
echo
-
while
-
foreach
-
case
-
if
-
-
Awk 명령어
-
Sed 명령어
[사용법]
-
소스 코드를 실행 (csh Basic_Example.csh)
[사용 OS]
-
Linux
[사용 언어]
-
ShellScript (csh)
소스 코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/csh | |
#============================================================= | |
# Basic | |
#============================================================= | |
echo " >> Basic: [begin] ! << " | |
echo 'Exam 01 :' | |
set a = 1 | |
set b = (10 20 30) | |
echo $?a # True : 1 / false : 0 | |
echo $#b # count | |
echo | |
set c=c/shell | |
set cc="cshell" | |
set ccc=(cshell01 cshell02 cshell03) | |
echo $c $cc $ccc | |
echo | |
echo $ccc | |
echo $ccc[*] | |
echo $ccc[1-3] | |
echo $ccc[1] $ccc[2] $ccc[3] | |
echo ${ccc[1]} ${ccc[2]} ${ccc[3]} | |
echo | |
echo $b[1] $b[2] $b[3] | |
echo ${b[1]} ${b[2]} ${b[3]} | |
echo | |
echo 'Exam 02 :' | |
set cf=/usr/bin/test.c | |
echo $cf:r # /usr/bin/test.c | |
echo $cf:h # /usr/bin | |
echo $cf:t # test.c | |
echo $cf:e # c | |
echo | |
echo 'Exam 03 :' | |
@ count = 6 # set count=6 | |
@ count = 3 # = += -= *= /= %= ++ -- | |
echo $count | |
echo | |
@ num = 20 | |
@ r = $num % 6 # + - * / % | |
echo $num $r | |
echo | |
echo 'Exam 04 :' | |
@ aa = 10 # 10 ---> 2 / 0000 0000 0000 1010 | |
@ bb = 12 # 10 ---> 2 / 0000 0000 0000 1100 | |
@ cc = ($aa&$bb) # 0000 0000 0000 1000 | |
@ dd = ($aa|$bb) # 0000 0000 0000 1110 | |
@ ee = ($aa<<2) # 0000 0000 0010 1000 | |
@ ff = (~ $aa) # 1111 1111 1111 0101 / 65525 ---> -11 | |
echo $cc $dd $ee $ff | |
echo " >> Basic: [end] ! << " | |
#============================================================= | |
# echo | |
#============================================================= | |
echo " >> echo: [begin] ! << " | |
set a = '123' | |
echo $a "$a" ${a} {$a} | |
echo '$a' \$a | |
set b = ( 4 5 6 ) | |
echo $b "$b" ${b} | |
echo '$b' \$b | |
echo " >> echo: [end] ! << " | |
#============================================================= | |
# While | |
#============================================================= | |
echo " >> While: [begin] ! << " | |
echo 'Exam 01 :' | |
set i = 0 | |
while ( $i <= 20 ) | |
if( ($i % 4) == 0) echo $i | |
# @ i++ | |
# @ i = `expr $i + 1` | |
# @ i = $i + 1 | |
# set i = `expr $i + 1` | |
set i = `echo 1 + $i | bc` | |
# unset i | |
end | |
echo | |
set b = `echo 1.2 +2.5 | bc` | |
set c = `echo 1.22 +2.51 | awk '{printf "%.2f", $1 +$2}'` | |
echo $b $c | |
echo | |
echo 'Exam 02 :' | |
set i = 2 | |
set j = 1 | |
while ( $j <= 5) | |
echo '2**'$j = $i | |
@ i *= 2 | |
@ j++ | |
end | |
echo | |
echo 'Exam 03 :' | |
set i = 1 | |
while ( $i < 4 ) | |
set j = 1 | |
while ( $j < 4 ) | |
echo $i $j `expr $i \* $j` | |
@ j++ | |
end | |
echo | |
@ i++ | |
end | |
echo " >> While: [end] ! << " | |
#============================================================= | |
# Foreach | |
#============================================================= | |
echo " >> Foreach: [begin] ! << " | |
echo 'Exam 01 :' | |
foreach i (10 20 30 40) | |
echo $i | |
end | |
echo | |
echo 'Exam 02 :' | |
set fcount = 0 | |
set dcount = 0 | |
foreach dir (*) | |
if ( -f $dir ) then | |
@ fcount++ | |
else if ( -d $dir ) then | |
@ dcount++ | |
endif | |
end | |
echo $fcount files $dcount dirs | |
echo | |
echo 'Exam 03 :' | |
foreach color (red yellow green blue) | |
echo 'one color is' "$color" | |
end | |
echo | |
echo " >> Foreach: [end] ! << " | |
#============================================================= | |
# Case | |
#============================================================= | |
echo " >> Case: [begin] ! << " | |
set reply = 1 | |
switch ( $reply) | |
case "1" : | |
echo '1 O' | |
breaksw | |
case "2" : | |
case "3" : | |
echo '3 O' | |
breaksw | |
case "4" : | |
echo '4 O' | |
breaksw | |
default : | |
echo '1,2,3,4 X' | |
breaksw | |
endsw | |
echo | |
echo " >> Case: [end] ! << " | |
# awk '{for (i=1; i<=5; i++) print $i}' | |
#============================================================= | |
# If | |
#============================================================= | |
echo " >> If: [end] ! << " | |
# set reply = Yes | |
# set reply = No | |
set reply = Y/N | |
if ( $reply == "Yes") then | |
echo Yes O | |
else if ( $reply == "No" ) then | |
echo No O | |
else | |
echo Yes, No X | |
endif | |
echo " >> If: [end] ! << " | |
#=============================================================' | |
# Awk ' | |
#=============================================================' | |
echo " >> Awk: [begin] ! << " | |
echo 'Exam 01 :' | |
awk '{print $1}' example.dat | sort -n -r | |
echo | |
echo 'Exam 02 :' | |
awk '{print $4,$1}' example.dat | sort -n | |
echo | |
echo 'Exam 03 :' | |
awk 'BEGIN {print "hello world"}' | |
echo | awk 'BEGIN {print "hello world"}' | |
echo | |
echo 'Exam 04 :' | |
awk 'BEGIN {print -10+1/2}' | |
echo `awk 'BEGIN {print -10+1/2}'` | |
echo | awk 'BEGIN {print -10+1/2}' | |
echo | |
echo 'Exam 05 :' | |
awk '{print $1, $2, $3, $4}' example.dat | |
echo | |
echo 'Exam 06 :' | |
awk '/./ {print $0}' example.dat | |
echo | |
echo 'Exam 07 :' | |
awk '{print $1$2 "-->$" $4}' example.dat | |
echo | |
echo 'Exam 08 :' | |
awk '{print ($1*$3), ($4-$3), ($3/$1), int($4)}' example.dat | |
echo | |
echo 'Exam 09 :' | |
awk 'NR>3 {print $0}' example.dat | |
echo | |
echo 'Exam 10 :' | |
awk 'NR<=3 {print $2}' example.dat | |
echo | |
echo 'Exam 11 :' | |
awk '$3>=10 {print $0}' example.dat | |
echo | |
echo 'Exam 12 :' | |
awk 'NR>2 && NR<5 {print $0}' example.dat | |
echo | |
echo 'Exam 13 :' | |
awk 'END {print $0}' example.dat | |
echo | |
echo 'Exam 14 :' | |
awk 'END {print NR, NF}' example.dat # NR,NF | |
echo | |
echo 'Exam 15 :' | |
awk 'BEGIN {print NR, NF}' example.dat | |
echo | |
echo 'Exam 16 :' | |
awk 'BEGIN {OFS="_"} {print $1, $2}' example.dat | |
echo | |
echo 'Exam 17 :' | |
awk 'BEGIN {FS=" "} {print $1, $2}' example.dat | |
echo | |
echo 'Exam 18 :' | |
awk 'BEGIN {x=1} {print $0, x++}' example.dat | |
echo | |
echo 'Exam 19 :' | |
awk 'BEGIN {x=0} {print $0, x+=10}' example.dat | |
echo | |
echo 'Exam 20 :' | |
awk '{if($1>2) print $0 ; else print $1}' example.dat | |
echo | |
echo 'Exam 21 :' | |
awk '{if($1>2) print $0 ; else if ($1>1) print $2 ; else print $1}' example.dat | |
echo | |
echo 'Exam 22 :' | |
awk '{printf("%4d %-20s %-5d %-7.2f \n", $1, $2, $3, $4)}' example.dat | |
echo | |
echo 'Exam 23 :' | |
set a = 1.dat,dat^ | |
set b = `echo $a | awk -F'[.,^]' '{print $1, $2, $3}'` | |
echo $a | |
echo $b | |
echo | |
echo " >> Awk: [end] ! << " | |
#=============================================================' | |
# Sed ' | |
#=============================================================' | |
echo " >> Sed: [begin] ! << " | |
# sed 's/\^M//g' 1.dat > 2.dat | |
echo " >> Sed: [end] ! << " |
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
'프로그래밍 언어 > Shell Script' 카테고리의 다른 글
[ShellScript] 쉘 스크립트 sed 문자열 치환 시 "echo" 대신 "Here String (<<<)" 사용 방법 (2) | 2020.01.19 |
---|---|
[Shell Script] 쉘 스크립트 템플릿 파일에서 변수 확장 방법 (0) | 2020.01.19 |
[Shell Script] 쉘 스크립트 분광반응함수를 이용한 각 채널별 파장 및 파수에 따른 반응도 특성 분석 (0) | 2019.08.25 |
[Shell Script] 쉘 스크립트 복사 전달 모수화 모델의 투과율 계산을 위한 온도보정 계수 산출 (0) | 2019.08.25 |
[Shell Script] 쉘 스크립트 그누플롯 (Gnuplot) stats 결과를 Fortran/Shell Script으로 읽기 (0) | 2019.08.25 |