• 아래의 내용을 포함하는 쉘 스크립트 파일을 작성하세요 (파일 명: metro)
• 첫번째 역의 위치를 입력 받으세요
• 첫번째 역이 1이면, 순방향 (즉, st1, st2, st3 ..)
• 첫번째 역이 14이면, 역방향 (즉, st14, st13, st12 ..)
• 모든 역에서 go 또는 stop을 결정하세요
• Y 또는 y 인 경우 go, 다른 값은 script 종료 (“exit” 명령어 사용)
• St 5 번 역을 만나면 “exit”을 화면에 출력하고 script 종료
• “current station is st5 (exit)” 출력
• St 5 번 역이 아닌 경우 “ stay”을 화면에 출력하세요
• “current station is st1 (stay)” 출력
• 결과 화면 샘플은 다음 슬라이드에...
[ 교수님이 보여준 코드.. ]
echo -n "select first station (st1 or st14): "; read first
if [ "$first" == "st1" ] ; then
for station in st1 st2 st3 st4 st5 st6 st7 st8 st9 st10 st11 st12 st13 st14
do
echo -n "go (y or Y): " ; read go
if [ "$go" == "y" ] || [ "$go" == "Y" ]
then
if [ "$station" == "st5" ] ; then
echo "current station is " $station "(exit)"
exit
else
echo "current station is " $station "(stay)"
fi
else
exit
fi
done
elif [ "$first" == "st14" ] ; then
for station in st14 st13 st12 st11 st10 st9 st8 st7 st6 st5 st4 st3 st2 st1
do
echo -n "go (y or Y):" ; read go
if [ "$go" == "y" ] || [ "$go" == "Y" ]
then
if [ "$station" == "$st" ] ; then
echo "current station is " $station "(exit)"
exit
else
echo "current station is " $station "(stay)"
fi
else
exit
fi
done
else
exit
fi
for 또는 while 에서 다음 실행의 위치를 반복문의 종료 위치로 변경
for 또는 while 에서 다음 실행의 위치를 반복문의 처음 위치로 변경
for (( ; ; ))
do
echo "Press CTRL+c to Stop"
done
while :
do
echo "Press CTRL+c to Stop"
done
#!/bin/bash
function foo()
{
echo "hello, world"
}
foo
#!/bin/bash
value="1234"
function foo()
{
local value="5678"
echo "2nd foo ${value}"
}
echo "1st foo ${value}"
foo
echo "3rd foo ${value}"
#!/bin/bash
value="1234"
function foo()
{
local value=$1
echo "2nd foo ${value}"
}
echo "1st foo ${value}"
foo 5678
echo "3rd foo ${value}"
결과는 위와 동일. 어쩃든 argument를 받을 땐, $1, $2, ...
$0 (예약) : 실행된 스크립트의 이름
$1 ~ $9
${10} ~ ${n}
#!/bin/bash
value="1234"
function foo()
{
local value=$1
echo "2nd foo ${value}"
}
echo "1st foo ${value}"
ret=$(foo 5678)
echo "${ret}"
echo "3rd foo ${value}"
#!/bin/bash
echo -n "select first station (st1 or st14):"; read first
cur_station()
{
echo -n "go (y or Y):" ; read go
if [ "$go" == "y" ] || [ "$go" == "Y" ]
then
if [ "$station" == "st5" ] ; then
echo "current station is " $station "(exit)"
exit
else
echo "current station is " $station "(stay)"
fi
else
exit
fi
}
if [ "$first" == "st1" ] ; then
for station in st1 st2 st3 st4 st5 st6 st7 st8 st9 st10 st11 st12 st13 st14
do
cur_station
done
elif [ "$first" == "st14" ] ; then
for station in st14 st13 st12 st11 st10 st9 st8 st7 st6 st5 st4 st3 st2 st1
do
cur_station
done
else
exit
fi
expr command 을 이용하여 산술 연산을 수행함
- 2개의 변수에 대한 연산 수행
- 기본 연산
- expr 명령어 사용시, 표현식 사이에 공백 분리
Example: b=`expr $a + 10`
- 문자열 계산
- Special Character
- $# : argument의 총 개수
- $* : 전체 argument 값
- $@ : 입력된 전체 argument 값을 하나씩 가져옴 (반복문에서 사용됨)
#!/bin/bash
echo $#
echo $*
배열 값 지정
- array_test=("hello" "world" "shell" "script")
배열 추가
- array_test[4]="pongchi"
배열 출력
- echo "${array_test[2]}" // 특정 index
- echo "${array_test[@]}" // 전체 index
- echo "${#array_test[@]" // 배열 개수 출력
특정 배열 지우기
- unset array_test[2]
array_test=("hello" "world" "shell" "script")
array_test[4]="pongchi"
echo "${array_test[2]}"
echo "${array_test[@]}"
echo "${#array_test[@]}"
unset array_test[2]
echo "${array_test[@]}"