728x90


#!/bin/bash
# 떠돌이별 목록.

for planet in Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune Pluto
do
  echo $planet
done

echo

# 따옴표로 묶인 전체 '목록'은 한 개의 변수를 만들어 냅니다.
for planet in "Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune Pluto"
do
  echo $planet
done

exit 0

 


#!/bin/bash
# 떠돌이별 재검토.

# 각 떠돌이별의 이름과 해(sun)까지 거리를 한 쌍으로 묶음.

for planet in "Mercury 36" "Venus 67" "Earth 93"  "Mars 142" "Jupiter 483"
do
  set -- $planet  # "planet" 변수를 파싱해서 위치 매개변수로 세팅.
  # "--" 를 쓰면 $planet 이 널이거나 대쉬 문자로 시작하는 등의 까다로운 상황을 처리해 줍니다.

  # 원래의 위치 매개변수는 덮어써지기 때문에 다른 곳에 저장해 놓아야 할지도 모릅니다.
  # 배열을 써서 해 볼 수 있겠네요.
  #        original_params=("$@")

  echo "$1              해까지 거리 $2,000,000 마일"
done

# (S.C. 가 확실한 설명을 더 해 줬습니다.)

exit 0
~

 

---------------------------------------------------------------------------------------------------------------------------------


#!/bin/bash
# wh-loopc.sh: "while" 루프에서 10까지 세기.

LIMIT=10
a=1

while [ "$a" -le $LIMIT ]
do
  echo -n "$a "
  let "a+=1"
done           # 아직은 별로 놀랄게 없네요.

echo; echo

# +=================================================================+

# 이제 똑같은 것을 C 형태의 문법으로 해 봅시다.

((a = 1))      # a=1
# 이중 소괄호에서는 변수를 세팅할 때 C 처럼 빈 칸을 넣어도 됩니다.

while (( a <= LIMIT ))   # 이중 소괄호, 변수 앞에 "$"가 없네요.
do
  echo -n "$a "
  ((a += 1))   # let "a+=1"
  # 역시 되는군요.
  # 이중 소괄호를 쓰면 C 문법처럼 변수를 증가시킬 수 있군요.
done

echo

# 이제 C 프로그래머도 Bash 를 쓸 때 편안하게 쓸 수 있겠습니다.

exit 0

 

 

 

 

until

until은 루프 최상단에서 특정 조건을 확인하면서 그 조건이 거짓일 동안 루프를 계속 돌도록 해 줍니다(while과 반대).

until [condition-is-true]
do
command...
done

주의할 점은 until이 몇몇 프로그래밍 언어에서 비슷한 형태와는 다르게 루프 처음에서 끝내는 조건을 검사한다는 것 입니다.

for/in 경우처럼 do를 조건문과 한 줄에 같이 쓰려면 세미콜론을 적어줘야 합니다.

until [condition-is-true] ; do

예 10-17. until 루프


#!/bin/bash

until [ "$var1" = end ] # 테스트 조건이 루프 최상단에 들어갑니다.
do
  echo "변수값을 넣으세요 #1 "
  echo "(끝내려면 end)"
  read var1
  echo "변수 #1 = $var1"
done  

exit 0

728x90

+ Recent posts